Skip to content

Commit e5b923f

Browse files
authored
Add config option to omit packageManager field (#81)
1 parent bfa68fb commit e5b923f

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
- [Use a flat structure inside your packages folders](#use-a-flat-structure-inside-your-packages-folders)
1515
- [Configuration Options](#configuration-options)
1616
- [logLevel](#loglevel)
17-
- [forceNpm](#forcenpm)
1817
- [buildDirName](#builddirname)
1918
- [includeDevDependencies](#includedevdependencies)
2019
- [pickFromScripts](#pickfromscripts)
2120
- [omitFromScripts](#omitfromscripts)
21+
- [omitPackageManager](#omitpackagemanager)
2222
- [isolateDirName](#isolatedirname)
2323
- [targetPackagePath](#targetpackagepath)
2424
- [tsconfigPath](#tsconfigpath)
@@ -245,6 +245,15 @@ you want to preserve all of the other scripts, set it to `["build"]`.
245245
By default, all scripts are omitted, and the [pickFromScripts](#pickfromscripts)
246246
configuration overrules this configuration.
247247

248+
### omitPackageManager
249+
250+
Type: `boolean`, default: `false`
251+
252+
By default the packageManager field from the root manifest is copied to the
253+
target manifest. I have found that some platforms (Cloud Run, April 2024) can
254+
fail on this for some reason. This option allows you to omit the field from the
255+
isolated package manifest.
256+
248257
### isolateDirName
249258

250259
Type: `string`, default: `"isolate"`

src/lib/config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export type IsolateConfigResolved = {
1818
forceNpm: boolean;
1919
pickFromScripts?: string[];
2020
omitFromScripts?: string[];
21+
omitPackageManager?: boolean;
2122
};
2223

2324
export type IsolateConfig = Partial<IsolateConfigResolved>;
@@ -35,6 +36,7 @@ const configDefaults: IsolateConfigResolved = {
3536
forceNpm: false,
3637
pickFromScripts: undefined,
3738
omitFromScripts: undefined,
39+
omitPackageManager: false,
3840
};
3941

4042
/**

src/lib/manifest/adapt-target-package-manifest.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ export async function adaptTargetPackageManifest({
2121
workspaceRootDir: string;
2222
}) {
2323
const packageManager = usePackageManager();
24-
const { includeDevDependencies, pickFromScripts, omitFromScripts } =
25-
useConfig();
24+
const {
25+
includeDevDependencies,
26+
pickFromScripts,
27+
omitFromScripts,
28+
omitPackageManager,
29+
} = useConfig();
2630

2731
/** Dev dependencies are omitted by default */
2832
const inputManifest = includeDevDependencies
@@ -45,8 +49,14 @@ export async function adaptTargetPackageManifest({
4549

4650
return {
4751
...adaptedManifest,
48-
/** Adopt the package manager definition from the root manifest if available. */
49-
packageManager: packageManager.packageManagerString,
52+
/**
53+
* Adopt the package manager definition from the root manifest if available.
54+
* The option to omit is there because some platforms might not handle it
55+
* properly (Cloud Run, April 24th 2024, does not handle pnpm v9)
56+
*/
57+
packageManager: omitPackageManager
58+
? undefined
59+
: packageManager.packageManagerString,
5060
/**
5161
* Scripts are removed by default if not explicitly picked or omitted via
5262
* config.

0 commit comments

Comments
 (0)