sku 13.4.0 → 13.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/packageManager.js +21 -6
- package/package.json +2 -1
- package/scripts/init.js +19 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# sku
|
|
2
2
|
|
|
3
|
+
## 13.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- `sku init`: Add a `pnpm.onlyBuiltDependencies` field to the `package.json` file if `pnpm` v10 is detected ([#1160](https://github.com/seek-oss/sku/pull/1160))
|
|
8
|
+
|
|
9
|
+
As of [`pnpm` v10], dependency lifecycle scripts are no longer run by default. Instead, explicit permission must be given on a per-dependency basis.
|
|
10
|
+
|
|
11
|
+
New `sku` projects will have this field added automatically if `pnpm` v10 is detected in order to ensure `sku` and its dependencies can run necessary lifecycle scripts after installation.
|
|
12
|
+
|
|
13
|
+
[`pnpm` v10]: https://github.com/pnpm/pnpm/releases/tag/v10.0.0
|
|
14
|
+
|
|
3
15
|
## 13.4.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/lib/packageManager.js
CHANGED
|
@@ -37,15 +37,24 @@ const validatePackageManager = (packageManager) => {
|
|
|
37
37
|
const getPackageManagerFromUserAgent = () => {
|
|
38
38
|
const userAgent = process.env.npm_config_user_agent || '';
|
|
39
39
|
|
|
40
|
+
// Default to 'npm'
|
|
41
|
+
let packageManager = 'npm';
|
|
42
|
+
|
|
43
|
+
let version = null;
|
|
44
|
+
if (userAgent) {
|
|
45
|
+
// User agents typically look like `pnpm/9.12.1 npm/? node/v20.17.0 linux x64`
|
|
46
|
+
version = userAgent.split(' ')?.[0].split('/')?.[1];
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
if (userAgent.includes('yarn')) {
|
|
41
|
-
|
|
50
|
+
packageManager = 'yarn';
|
|
42
51
|
}
|
|
43
52
|
|
|
44
53
|
if (userAgent.includes('pnpm')) {
|
|
45
|
-
|
|
54
|
+
packageManager = 'pnpm';
|
|
46
55
|
}
|
|
47
56
|
|
|
48
|
-
return
|
|
57
|
+
return { packageManager, version };
|
|
49
58
|
};
|
|
50
59
|
|
|
51
60
|
/** @type {Record<SupportedPackageManager, string>} */
|
|
@@ -61,8 +70,9 @@ const lockfileByPackageManager = {
|
|
|
61
70
|
* If the project does not have a root directory, `rootDir` will be `null`.
|
|
62
71
|
*/
|
|
63
72
|
const getPackageManager = () => {
|
|
73
|
+
const userAgentPackageManager = getPackageManagerFromUserAgent();
|
|
64
74
|
const packageManager = validatePackageManager(
|
|
65
|
-
skuArgs?.packageManager ||
|
|
75
|
+
skuArgs?.packageManager || userAgentPackageManager.packageManager,
|
|
66
76
|
);
|
|
67
77
|
|
|
68
78
|
const lockFile = lockfileByPackageManager[packageManager];
|
|
@@ -72,10 +82,14 @@ const getPackageManager = () => {
|
|
|
72
82
|
/** @type {string | null} */
|
|
73
83
|
const rootDir = lockFilePath ? path.dirname(lockFilePath) : null;
|
|
74
84
|
|
|
75
|
-
return {
|
|
85
|
+
return {
|
|
86
|
+
packageManager,
|
|
87
|
+
rootDir,
|
|
88
|
+
packageManagerVersion: userAgentPackageManager.version,
|
|
89
|
+
};
|
|
76
90
|
};
|
|
77
91
|
|
|
78
|
-
const { rootDir, packageManager } = getPackageManager();
|
|
92
|
+
const { rootDir, packageManager, packageManagerVersion } = getPackageManager();
|
|
79
93
|
|
|
80
94
|
/**
|
|
81
95
|
* @param {SupportedPackageManager} agent
|
|
@@ -178,6 +192,7 @@ const getPackageManagerInstallPage = () => INSTALL_PAGE[packageManager];
|
|
|
178
192
|
module.exports = {
|
|
179
193
|
rootDir,
|
|
180
194
|
packageManager,
|
|
195
|
+
packageManagerVersion,
|
|
181
196
|
isYarn,
|
|
182
197
|
isPnpm,
|
|
183
198
|
isNpm,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sku",
|
|
3
|
-
"version": "13.4.
|
|
3
|
+
"version": "13.4.1",
|
|
4
4
|
"description": "Front-end development toolkit, powered by Webpack, Babel, Vanilla Extract and Jest",
|
|
5
5
|
"types": "./sku-types.d.ts",
|
|
6
6
|
"bin": {
|
|
@@ -152,6 +152,7 @@
|
|
|
152
152
|
"@types/prettier": "^2.7.3",
|
|
153
153
|
"@types/react": "^18.2.3",
|
|
154
154
|
"@types/react-dom": "^18.2.3",
|
|
155
|
+
"@types/semver": "^7.5.8",
|
|
155
156
|
"@types/webpack-bundle-analyzer": "^4.7.0",
|
|
156
157
|
"@types/wrap-ansi": "^3.0.0",
|
|
157
158
|
"@vanilla-extract/css": "^1.0.0",
|
package/scripts/init.js
CHANGED
|
@@ -5,6 +5,7 @@ const {
|
|
|
5
5
|
getRunCommand,
|
|
6
6
|
getPackageManagerInstallPage,
|
|
7
7
|
getInstallCommand,
|
|
8
|
+
packageManagerVersion,
|
|
8
9
|
} = require('../lib/packageManager');
|
|
9
10
|
|
|
10
11
|
const chalk = require('chalk');
|
|
@@ -22,6 +23,7 @@ const toPosixPath = require('../lib/toPosixPath');
|
|
|
22
23
|
const trace = require('debug')('sku:init');
|
|
23
24
|
const { fdir: Fdir } = require('fdir');
|
|
24
25
|
const { Eta } = require('eta');
|
|
26
|
+
const semver = require('semver');
|
|
25
27
|
|
|
26
28
|
const args = require('../config/args');
|
|
27
29
|
|
|
@@ -145,6 +147,23 @@ const packageNameRegex =
|
|
|
145
147
|
format: 'sku format',
|
|
146
148
|
},
|
|
147
149
|
};
|
|
150
|
+
|
|
151
|
+
const isAtLeastPnpmV10 =
|
|
152
|
+
packageManager === 'pnpm' &&
|
|
153
|
+
packageManagerVersion &&
|
|
154
|
+
semver.satisfies(packageManagerVersion, '>=10.0.0');
|
|
155
|
+
|
|
156
|
+
if (isAtLeastPnpmV10) {
|
|
157
|
+
trace(
|
|
158
|
+
'PNPM version is >= 10.0.0, adding "pnpm.onlyBuiltDependencies" to package.json',
|
|
159
|
+
);
|
|
160
|
+
// Allows `pnpm` to run `sku`'s, and its dependencies', build scripts
|
|
161
|
+
// See https://pnpm.io/package_json#pnpmonlybuiltdependencies
|
|
162
|
+
packageJson.pnpm = {
|
|
163
|
+
onlyBuiltDependencies: ['sku', '@swc/core', 'esbuild'],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
148
167
|
const packageJsonString = JSON.stringify(packageJson, null, 2);
|
|
149
168
|
|
|
150
169
|
await fs.writeFile(path.join(root, 'package.json'), packageJsonString);
|