jiek 2.0.2 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +18 -3
- package/dist/cli-only-build.cjs +12 -82
- package/dist/cli-only-build.js +12 -82
- package/dist/cli.cjs +243 -69
- package/dist/cli.js +246 -72
- package/dist/rollup/index.cjs +2 -2
- package/dist/rollup/index.js +2 -2
- package/package.json +26 -33
- package/rollup/package.json +1 -0
- package/src/commands/build.ts +13 -18
- package/src/commands/publish.ts +341 -128
- package/src/rollup/index.ts +2 -2
package/README.md
CHANGED
@@ -56,11 +56,26 @@ yarn add -D jiek
|
|
56
56
|
}
|
57
57
|
```
|
58
58
|
|
59
|
-
- 假设你在工作空间下有一个包名字为 `@monorepo/utils` ,那么你可以运行 `
|
59
|
+
- 假设你在工作空间下有一个包名字为 `@monorepo/utils` ,那么你可以运行 `jk -f utils build` 来构建这个包。
|
60
60
|
|
61
|
-
-
|
61
|
+
- 当需要发布当前的包的时候,首先你可以通过 `jk -f utils prepublish` 来准备发布内容,然后再运行 `jk -f utils publish` 来发布,最后通过 `jk -f utils postpublish` 来清理发布内容。
|
62
62
|
|
63
|
-
|
63
|
+
- 当然可能你会觉得上面的操作有点繁琐,你可以通过在对应包的 `package.json` 中添加 `scripts` 来简化操作。
|
64
|
+
|
65
|
+
```json
|
66
|
+
{
|
67
|
+
...
|
68
|
+
"scripts": {
|
69
|
+
"prepublish": "jb && jk",
|
70
|
+
"postpublish": "jk"
|
71
|
+
},
|
72
|
+
...
|
73
|
+
}
|
74
|
+
```
|
75
|
+
|
76
|
+
> 在你的 dist 产物目录(可配置)下会生成一个 `package.json` 文件,如果你需要在发布前对要发布的内容进行检查,你可以通过 `prepublish` 子指令来生成发布内容并在对应的输出目录中进行检查。
|
77
|
+
|
78
|
+
- 当配置好了上述的 hook 后,通过 `jk publish` 就可以一键完成构建发布动作了。
|
64
79
|
|
65
80
|
## CLI
|
66
81
|
|
package/dist/cli-only-build.cjs
CHANGED
@@ -116,7 +116,7 @@ async function getSelectedProjectsGraph(filter = commander.program.getOptionValu
|
|
116
116
|
|
117
117
|
var name = "jiek";
|
118
118
|
var type = "module";
|
119
|
-
var version = "2.0
|
119
|
+
var version = "2.1.0";
|
120
120
|
var description$1 = "A lightweight toolkit for compiling and managing libraries based on `package.json` metadata and suitable for `Monorepo`.";
|
121
121
|
var author = "YiJie <yijie4188@gmail.com>";
|
122
122
|
var repository = {
|
@@ -139,7 +139,8 @@ var files = [
|
|
139
139
|
"README.md"
|
140
140
|
];
|
141
141
|
var scripts = {
|
142
|
-
prepublish: "jb
|
142
|
+
prepublish: "jb -nm && jk",
|
143
|
+
postpublish: "jk"
|
143
144
|
};
|
144
145
|
var exports$1 = {
|
145
146
|
"./package.json": "./package.json",
|
@@ -177,32 +178,6 @@ var peerDependencies = {
|
|
177
178
|
"rollup-plugin-swc3": "^0.12.1",
|
178
179
|
typescript: "^4.0.0||^5.0.0"
|
179
180
|
};
|
180
|
-
var peerDependenciesMeta = {
|
181
|
-
"@rollup/plugin-terser": {
|
182
|
-
optional: true
|
183
|
-
},
|
184
|
-
"@pnpm/filter-workspace-packages": {
|
185
|
-
optional: true
|
186
|
-
},
|
187
|
-
"esbuild-register": {
|
188
|
-
optional: true
|
189
|
-
},
|
190
|
-
postcss: {
|
191
|
-
optional: true
|
192
|
-
},
|
193
|
-
"rollup-plugin-postcss": {
|
194
|
-
optional: true
|
195
|
-
},
|
196
|
-
"rollup-plugin-esbuild": {
|
197
|
-
optional: true
|
198
|
-
},
|
199
|
-
"rollup-plugin-swc3": {
|
200
|
-
optional: true
|
201
|
-
},
|
202
|
-
typescript: {
|
203
|
-
optional: true
|
204
|
-
}
|
205
|
-
};
|
206
181
|
var devDependencies = {
|
207
182
|
"@npm/types": "^1.0.2",
|
208
183
|
"@pnpm/filter-workspace-packages": "^7.2.13",
|
@@ -220,44 +195,6 @@ var devDependencies = {
|
|
220
195
|
"rollup-plugin-esbuild": "^6.1.0",
|
221
196
|
"rollup-plugin-swc3": "^0.12.1"
|
222
197
|
};
|
223
|
-
var publishConfig = {
|
224
|
-
exports: {
|
225
|
-
"./package.json": "./package.json",
|
226
|
-
".": {
|
227
|
-
source: "./src/index.ts",
|
228
|
-
require: "./dist/index.cjs",
|
229
|
-
"default": "./dist/index.js"
|
230
|
-
},
|
231
|
-
"./cli": {
|
232
|
-
source: "./src/cli.ts",
|
233
|
-
require: "./dist/cli.cjs",
|
234
|
-
"default": "./dist/cli.js"
|
235
|
-
},
|
236
|
-
"./cli-only-build": {
|
237
|
-
source: "./src/cli-only-build.ts",
|
238
|
-
require: "./dist/cli-only-build.cjs",
|
239
|
-
"default": "./dist/cli-only-build.js"
|
240
|
-
},
|
241
|
-
"./rollup": {
|
242
|
-
source: "./src/rollup/index.ts",
|
243
|
-
require: "./dist/rollup/index.cjs",
|
244
|
-
"default": "./dist/rollup/index.js"
|
245
|
-
}
|
246
|
-
},
|
247
|
-
main: "./dist/index.cjs",
|
248
|
-
module: "./dist/index.js",
|
249
|
-
typesVersions: {
|
250
|
-
"<5.0": {
|
251
|
-
"*": [
|
252
|
-
"*",
|
253
|
-
"./dist/*",
|
254
|
-
"./dist/*/index.d.ts",
|
255
|
-
"./dist/*/index.d.mts",
|
256
|
-
"./dist/*/index.d.cts"
|
257
|
-
]
|
258
|
-
}
|
259
|
-
}
|
260
|
-
};
|
261
198
|
var pkg = {
|
262
199
|
name: name,
|
263
200
|
type: type,
|
@@ -274,9 +211,7 @@ var pkg = {
|
|
274
211
|
imports: imports,
|
275
212
|
dependencies: dependencies,
|
276
213
|
peerDependencies: peerDependencies,
|
277
|
-
|
278
|
-
devDependencies: devDependencies,
|
279
|
-
publishConfig: publishConfig
|
214
|
+
devDependencies: devDependencies
|
280
215
|
};
|
281
216
|
|
282
217
|
const entriesDescription = `
|
@@ -422,7 +357,7 @@ const require$1 = node_module.createRequire((typeof document === 'undefined' ? r
|
|
422
357
|
const isDefault = process.env.JIEK_IS_ONLY_BUILD === "true";
|
423
358
|
const description = `
|
424
359
|
Build the package according to the 'exports' field from the package.json.
|
425
|
-
If you want to
|
360
|
+
If you want to through the options to the \`rollup\` command, you can pass the options after '--'.
|
426
361
|
${isDefault ? "This command is the default command." : ""}
|
427
362
|
`.trim();
|
428
363
|
async function checkDependency(dependency) {
|
@@ -464,20 +399,15 @@ const buildEntriesDescription = `
|
|
464
399
|
${entriesDescription}
|
465
400
|
If you pass the --entries option, it will merge into the entries of the command.
|
466
401
|
`.trim();
|
467
|
-
const command = isDefault ?
|
468
|
-
|
469
|
-
if (
|
470
|
-
|
402
|
+
const command = isDefault ? (() => {
|
403
|
+
const c = commander.program.name("jb/jiek-build").helpCommand(false);
|
404
|
+
if (IS_WORKSPACE) {
|
405
|
+
c.argument("[filters]", buildFilterDescription);
|
471
406
|
} else {
|
472
|
-
|
407
|
+
c.argument("[entries]", buildEntriesDescription);
|
473
408
|
}
|
474
|
-
|
475
|
-
|
476
|
-
command.argument("[entries]", buildEntriesDescription);
|
477
|
-
} else {
|
478
|
-
command.command("build [entries]");
|
479
|
-
}
|
480
|
-
}
|
409
|
+
return c;
|
410
|
+
})() : commander.program.command(`build [${IS_WORKSPACE ? "filters" : "entries"}]`);
|
481
411
|
command.description(description).option("-t, --type <TYPE>", `The type of build, support ${BUILDER_TYPES.map((s) => `"${s}"`).join(", ")}.`, (v) => {
|
482
412
|
if (!BUILDER_TYPES.includes(v)) {
|
483
413
|
throw new Error(`The value of 'type' must be ${BUILDER_TYPES.map((s) => `"${s}"`).join(", ")}`);
|
package/dist/cli-only-build.js
CHANGED
@@ -108,7 +108,7 @@ async function getSelectedProjectsGraph(filter = program.getOptionValue("filter"
|
|
108
108
|
|
109
109
|
var name = "jiek";
|
110
110
|
var type = "module";
|
111
|
-
var version = "2.0
|
111
|
+
var version = "2.1.0";
|
112
112
|
var description$1 = "A lightweight toolkit for compiling and managing libraries based on `package.json` metadata and suitable for `Monorepo`.";
|
113
113
|
var author = "YiJie <yijie4188@gmail.com>";
|
114
114
|
var repository = {
|
@@ -131,7 +131,8 @@ var files = [
|
|
131
131
|
"README.md"
|
132
132
|
];
|
133
133
|
var scripts = {
|
134
|
-
prepublish: "jb
|
134
|
+
prepublish: "jb -nm && jk",
|
135
|
+
postpublish: "jk"
|
135
136
|
};
|
136
137
|
var exports = {
|
137
138
|
"./package.json": "./package.json",
|
@@ -169,32 +170,6 @@ var peerDependencies = {
|
|
169
170
|
"rollup-plugin-swc3": "^0.12.1",
|
170
171
|
typescript: "^4.0.0||^5.0.0"
|
171
172
|
};
|
172
|
-
var peerDependenciesMeta = {
|
173
|
-
"@rollup/plugin-terser": {
|
174
|
-
optional: true
|
175
|
-
},
|
176
|
-
"@pnpm/filter-workspace-packages": {
|
177
|
-
optional: true
|
178
|
-
},
|
179
|
-
"esbuild-register": {
|
180
|
-
optional: true
|
181
|
-
},
|
182
|
-
postcss: {
|
183
|
-
optional: true
|
184
|
-
},
|
185
|
-
"rollup-plugin-postcss": {
|
186
|
-
optional: true
|
187
|
-
},
|
188
|
-
"rollup-plugin-esbuild": {
|
189
|
-
optional: true
|
190
|
-
},
|
191
|
-
"rollup-plugin-swc3": {
|
192
|
-
optional: true
|
193
|
-
},
|
194
|
-
typescript: {
|
195
|
-
optional: true
|
196
|
-
}
|
197
|
-
};
|
198
173
|
var devDependencies = {
|
199
174
|
"@npm/types": "^1.0.2",
|
200
175
|
"@pnpm/filter-workspace-packages": "^7.2.13",
|
@@ -212,44 +187,6 @@ var devDependencies = {
|
|
212
187
|
"rollup-plugin-esbuild": "^6.1.0",
|
213
188
|
"rollup-plugin-swc3": "^0.12.1"
|
214
189
|
};
|
215
|
-
var publishConfig = {
|
216
|
-
exports: {
|
217
|
-
"./package.json": "./package.json",
|
218
|
-
".": {
|
219
|
-
source: "./src/index.ts",
|
220
|
-
require: "./dist/index.cjs",
|
221
|
-
"default": "./dist/index.js"
|
222
|
-
},
|
223
|
-
"./cli": {
|
224
|
-
source: "./src/cli.ts",
|
225
|
-
require: "./dist/cli.cjs",
|
226
|
-
"default": "./dist/cli.js"
|
227
|
-
},
|
228
|
-
"./cli-only-build": {
|
229
|
-
source: "./src/cli-only-build.ts",
|
230
|
-
require: "./dist/cli-only-build.cjs",
|
231
|
-
"default": "./dist/cli-only-build.js"
|
232
|
-
},
|
233
|
-
"./rollup": {
|
234
|
-
source: "./src/rollup/index.ts",
|
235
|
-
require: "./dist/rollup/index.cjs",
|
236
|
-
"default": "./dist/rollup/index.js"
|
237
|
-
}
|
238
|
-
},
|
239
|
-
main: "./dist/index.cjs",
|
240
|
-
module: "./dist/index.js",
|
241
|
-
typesVersions: {
|
242
|
-
"<5.0": {
|
243
|
-
"*": [
|
244
|
-
"*",
|
245
|
-
"./dist/*",
|
246
|
-
"./dist/*/index.d.ts",
|
247
|
-
"./dist/*/index.d.mts",
|
248
|
-
"./dist/*/index.d.cts"
|
249
|
-
]
|
250
|
-
}
|
251
|
-
}
|
252
|
-
};
|
253
190
|
var pkg = {
|
254
191
|
name: name,
|
255
192
|
type: type,
|
@@ -266,9 +203,7 @@ var pkg = {
|
|
266
203
|
imports: imports,
|
267
204
|
dependencies: dependencies,
|
268
205
|
peerDependencies: peerDependencies,
|
269
|
-
|
270
|
-
devDependencies: devDependencies,
|
271
|
-
publishConfig: publishConfig
|
206
|
+
devDependencies: devDependencies
|
272
207
|
};
|
273
208
|
|
274
209
|
const entriesDescription = `
|
@@ -414,7 +349,7 @@ const require = createRequire(import.meta.url);
|
|
414
349
|
const isDefault = process.env.JIEK_IS_ONLY_BUILD === "true";
|
415
350
|
const description = `
|
416
351
|
Build the package according to the 'exports' field from the package.json.
|
417
|
-
If you want to
|
352
|
+
If you want to through the options to the \`rollup\` command, you can pass the options after '--'.
|
418
353
|
${isDefault ? "This command is the default command." : ""}
|
419
354
|
`.trim();
|
420
355
|
async function checkDependency(dependency) {
|
@@ -456,20 +391,15 @@ const buildEntriesDescription = `
|
|
456
391
|
${entriesDescription}
|
457
392
|
If you pass the --entries option, it will merge into the entries of the command.
|
458
393
|
`.trim();
|
459
|
-
const command = isDefault ?
|
460
|
-
|
461
|
-
if (
|
462
|
-
|
394
|
+
const command = isDefault ? (() => {
|
395
|
+
const c = program.name("jb/jiek-build").helpCommand(false);
|
396
|
+
if (IS_WORKSPACE) {
|
397
|
+
c.argument("[filters]", buildFilterDescription);
|
463
398
|
} else {
|
464
|
-
|
399
|
+
c.argument("[entries]", buildEntriesDescription);
|
465
400
|
}
|
466
|
-
|
467
|
-
|
468
|
-
command.argument("[entries]", buildEntriesDescription);
|
469
|
-
} else {
|
470
|
-
command.command("build [entries]");
|
471
|
-
}
|
472
|
-
}
|
401
|
+
return c;
|
402
|
+
})() : program.command(`build [${IS_WORKSPACE ? "filters" : "entries"}]`);
|
473
403
|
command.description(description).option("-t, --type <TYPE>", `The type of build, support ${BUILDER_TYPES.map((s) => `"${s}"`).join(", ")}.`, (v) => {
|
474
404
|
if (!BUILDER_TYPES.includes(v)) {
|
475
405
|
throw new Error(`The value of 'type' must be ${BUILDER_TYPES.map((s) => `"${s}"`).join(", ")}`);
|
package/dist/cli.cjs
CHANGED
@@ -44,14 +44,6 @@ var detectIndent__default = /*#__PURE__*/_interopDefault(detectIndent);
|
|
44
44
|
var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
|
45
45
|
var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
|
46
46
|
|
47
|
-
let resolve;
|
48
|
-
function actionDone() {
|
49
|
-
resolve();
|
50
|
-
}
|
51
|
-
function actionRestore() {
|
52
|
-
new Promise((r) => resolve = r);
|
53
|
-
}
|
54
|
-
|
55
47
|
let root;
|
56
48
|
function getRoot() {
|
57
49
|
if (root)
|
@@ -4454,14 +4446,59 @@ Support with variables: 'PKG_NAME',
|
|
4454
4446
|
.e.g. 'dist/{{PKG_NAME}}'.
|
4455
4447
|
`.trim();
|
4456
4448
|
|
4457
|
-
|
4458
|
-
|
4449
|
+
const description = `
|
4450
|
+
Publish package to npm registry, and auto generate exports field and other fields in published package.json.
|
4451
|
+
If you want to through the options to the \`pnpm publish\` command, you can pass the options after '--'.
|
4452
|
+
`.trim();
|
4453
|
+
async function forEachSelectedProjectsGraphEntries(callback) {
|
4459
4454
|
const { value = {} } = await getSelectedProjectsGraph() ?? {};
|
4460
4455
|
const selectedProjectsGraphEntries = Object.entries(value);
|
4461
4456
|
if (selectedProjectsGraphEntries.length === 0) {
|
4462
4457
|
throw new Error("no packages selected");
|
4463
4458
|
}
|
4464
|
-
const
|
4459
|
+
for (const [dir, manifest] of selectedProjectsGraphEntries) {
|
4460
|
+
callback(dir, manifest);
|
4461
|
+
}
|
4462
|
+
}
|
4463
|
+
commander.program.command("publish").description(description).aliases(["pub", "p"]).option("-b, --bumper <bumper>", "bump version", "patch").option("-no-b, --no-bumper", "no bump version").option("-o, --outdir <OUTDIR>", outdirDescription, String, "dist").action(async ({ outdir, bumper: bumper$1 }) => {
|
4464
|
+
let shouldPassThrough = false;
|
4465
|
+
const passThroughOptions = process.argv.reduce(
|
4466
|
+
(acc, value) => {
|
4467
|
+
if (shouldPassThrough) {
|
4468
|
+
acc.push(value);
|
4469
|
+
}
|
4470
|
+
if (value === "--") {
|
4471
|
+
shouldPassThrough = true;
|
4472
|
+
}
|
4473
|
+
return acc;
|
4474
|
+
},
|
4475
|
+
[]
|
4476
|
+
);
|
4477
|
+
await forEachSelectedProjectsGraphEntries((dir) => {
|
4478
|
+
const args = ["pnpm", "publish", "--access", "public", "--no-git-checks"];
|
4479
|
+
if (bumper$1 && bumper.TAGS.includes(bumper$1)) {
|
4480
|
+
args.push("--tag", bumper$1);
|
4481
|
+
}
|
4482
|
+
args.push(...passThroughOptions);
|
4483
|
+
childProcess__namespace.execSync(args.join(" "), {
|
4484
|
+
cwd: dir,
|
4485
|
+
stdio: "inherit",
|
4486
|
+
env: {
|
4487
|
+
...process.env,
|
4488
|
+
JIEK_PUBLISH_OUTDIR: JSON.stringify(outdir),
|
4489
|
+
JIEK_PUBLISH_BUMPER: JSON.stringify(bumper$1)
|
4490
|
+
}
|
4491
|
+
});
|
4492
|
+
});
|
4493
|
+
});
|
4494
|
+
async function prepublish() {
|
4495
|
+
const {
|
4496
|
+
JIEK_PUBLISH_OUTDIR: outdirEnv,
|
4497
|
+
JIEK_PUBLISH_BUMPER: bumperEnv
|
4498
|
+
} = process.env;
|
4499
|
+
const outdir = outdirEnv ? JSON.parse(outdirEnv) : "dist";
|
4500
|
+
const bumper$1 = bumperEnv ? JSON.parse(bumperEnv) : false;
|
4501
|
+
const generateNewManifest = (dir, manifest) => {
|
4465
4502
|
const { name, type, exports: entrypoints = {} } = manifest;
|
4466
4503
|
if (!name) {
|
4467
4504
|
throw new Error(`package.json in ${dir} must have a name field`);
|
@@ -4482,35 +4519,38 @@ commander.program.command("publish").aliases(["pub", "p"]).option("-b, --bumper
|
|
4482
4519
|
...resolvedEntrypoints,
|
4483
4520
|
...exports
|
4484
4521
|
};
|
4485
|
-
return [
|
4486
|
-
}
|
4487
|
-
const
|
4488
|
-
|
4489
|
-
|
4490
|
-
|
4491
|
-
|
4492
|
-
}
|
4493
|
-
for (const [dir, manifest, resolvedOutdir] of manifests) {
|
4494
|
-
const oldJSONString = fs__default.default.readFileSync(path__default.default.join(dir, "package.json"), "utf-8");
|
4495
|
-
const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
|
4496
|
-
const newVersion = bumper$1 ? bumper.bump(oldJSON.version, bumper$1) : oldJSON.version;
|
4497
|
-
const { indent = " " } = detectIndent__default.default(oldJSONString);
|
4498
|
-
const formattingOptions = {
|
4499
|
-
tabSize: indent.length,
|
4500
|
-
insertSpaces: true
|
4501
|
-
};
|
4522
|
+
return [newManifest, resolvedOutdir];
|
4523
|
+
};
|
4524
|
+
const generateNewPackageJSONString = ({
|
4525
|
+
oldJSONString,
|
4526
|
+
oldJSON,
|
4527
|
+
manifest,
|
4528
|
+
formattingOptions
|
4529
|
+
}) => {
|
4502
4530
|
let newJSONString = oldJSONString;
|
4503
4531
|
newJSONString = jsoncParser.applyEdits(
|
4504
4532
|
newJSONString,
|
4505
4533
|
jsoncParser.modify(
|
4506
4534
|
newJSONString,
|
4507
|
-
["
|
4508
|
-
|
4535
|
+
["publishConfig", "typesVersions"],
|
4536
|
+
{
|
4537
|
+
"<5.0": {
|
4538
|
+
"*": [
|
4539
|
+
"*",
|
4540
|
+
`./*`,
|
4541
|
+
`./*/index.d.ts`,
|
4542
|
+
`./*/index.d.mts`,
|
4543
|
+
`./*/index.d.cts`
|
4544
|
+
]
|
4545
|
+
}
|
4546
|
+
},
|
4509
4547
|
{ formattingOptions }
|
4510
4548
|
)
|
4511
4549
|
);
|
4512
|
-
for (const [key,
|
4513
|
-
if (
|
4550
|
+
for (const [key, value] of Object.entries(manifest)) {
|
4551
|
+
if (key === "version")
|
4552
|
+
continue;
|
4553
|
+
if (JSON.stringify(value) === JSON.stringify(oldJSON[key]))
|
4514
4554
|
continue;
|
4515
4555
|
if (key !== "exports") {
|
4516
4556
|
newJSONString = jsoncParser.applyEdits(
|
@@ -4518,12 +4558,12 @@ commander.program.command("publish").aliases(["pub", "p"]).option("-b, --bumper
|
|
4518
4558
|
jsoncParser.modify(
|
4519
4559
|
newJSONString,
|
4520
4560
|
["publishConfig", key],
|
4521
|
-
|
4561
|
+
value,
|
4522
4562
|
{ formattingOptions }
|
4523
4563
|
)
|
4524
4564
|
);
|
4525
4565
|
} else {
|
4526
|
-
const exports =
|
4566
|
+
const exports = value;
|
4527
4567
|
for (const [k, v] of Object.entries(exports)) {
|
4528
4568
|
newJSONString = jsoncParser.applyEdits(
|
4529
4569
|
newJSONString,
|
@@ -4565,46 +4605,180 @@ commander.program.command("publish").aliases(["pub", "p"]).option("-b, --bumper
|
|
4565
4605
|
}
|
4566
4606
|
}
|
4567
4607
|
}
|
4568
|
-
|
4569
|
-
|
4570
|
-
|
4571
|
-
|
4572
|
-
|
4573
|
-
{
|
4574
|
-
"<5.0": {
|
4575
|
-
"*": [
|
4576
|
-
"*",
|
4577
|
-
`${resolvedOutdir}/*`,
|
4578
|
-
`${resolvedOutdir}/*/index.d.ts`,
|
4579
|
-
`${resolvedOutdir}/*/index.d.mts`,
|
4580
|
-
`${resolvedOutdir}/*/index.d.cts`
|
4581
|
-
]
|
4582
|
-
}
|
4608
|
+
if (oldJSON["peerDependencies"]) {
|
4609
|
+
const peerDependenciesMeta = Object.keys(oldJSON["peerDependencies"]).reduce(
|
4610
|
+
(acc, key) => {
|
4611
|
+
acc[key] = { optional: true };
|
4612
|
+
return acc;
|
4583
4613
|
},
|
4584
|
-
{
|
4585
|
-
)
|
4614
|
+
{}
|
4615
|
+
);
|
4616
|
+
newJSONString = jsoncParser.applyEdits(
|
4617
|
+
newJSONString,
|
4618
|
+
jsoncParser.modify(
|
4619
|
+
newJSONString,
|
4620
|
+
["peerDependenciesMeta"],
|
4621
|
+
peerDependenciesMeta,
|
4622
|
+
{ formattingOptions }
|
4623
|
+
)
|
4624
|
+
);
|
4625
|
+
}
|
4626
|
+
if (oldJSON["files"]) {
|
4627
|
+
newJSONString = jsoncParser.applyEdits(
|
4628
|
+
newJSONString,
|
4629
|
+
jsoncParser.modify(
|
4630
|
+
newJSONString,
|
4631
|
+
["files"],
|
4632
|
+
void 0,
|
4633
|
+
{ formattingOptions }
|
4634
|
+
)
|
4635
|
+
);
|
4636
|
+
}
|
4637
|
+
return newJSONString;
|
4638
|
+
};
|
4639
|
+
await forEachSelectedProjectsGraphEntries((dir, originalManifest) => {
|
4640
|
+
const [manifest, resolvedOutdir] = generateNewManifest(dir, originalManifest);
|
4641
|
+
const resolveByDir = (...paths) => path__default.default.resolve(dir, ...paths);
|
4642
|
+
const oldJSONString = fs__default.default.readFileSync(resolveByDir("package.json"), "utf-8");
|
4643
|
+
const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
|
4644
|
+
if (typeof oldJSON.version !== "string") {
|
4645
|
+
throw new Error(`${dir}/package.json must have a version field with a string value`);
|
4646
|
+
}
|
4647
|
+
const { indent = " " } = detectIndent__default.default(oldJSONString);
|
4648
|
+
const formattingOptions = {
|
4649
|
+
tabSize: indent.length,
|
4650
|
+
insertSpaces: true
|
4651
|
+
};
|
4652
|
+
const newVersion = bumper$1 ? bumper.bump(oldJSON.version, bumper$1) : oldJSON.version;
|
4653
|
+
const modifyVersionPackageJSON = jsoncParser.applyEdits(
|
4654
|
+
oldJSONString,
|
4655
|
+
jsoncParser.modify(oldJSONString, ["version"], newVersion, { formattingOptions })
|
4586
4656
|
);
|
4587
|
-
|
4588
|
-
|
4589
|
-
|
4590
|
-
|
4591
|
-
|
4657
|
+
const newJSONString = generateNewPackageJSONString({
|
4658
|
+
oldJSONString: modifyVersionPackageJSON,
|
4659
|
+
oldJSON: {
|
4660
|
+
...oldJSON,
|
4661
|
+
version: newVersion
|
4662
|
+
},
|
4663
|
+
manifest,
|
4664
|
+
formattingOptions
|
4665
|
+
});
|
4666
|
+
const withPublishConfigDirectoryOldJSONString = jsoncParser.applyEdits(
|
4667
|
+
modifyVersionPackageJSON,
|
4668
|
+
jsoncParser.modify(modifyVersionPackageJSON, ["publishConfig", "directory"], resolvedOutdir, { formattingOptions })
|
4669
|
+
);
|
4670
|
+
if (!fs__default.default.existsSync(resolveByDir(resolvedOutdir))) {
|
4671
|
+
fs__default.default.mkdirSync(resolveByDir(resolvedOutdir));
|
4672
|
+
}
|
4673
|
+
const jiekTempDir = resolveByDir("node_modules/.jiek/.tmp");
|
4674
|
+
if (!fs__default.default.existsSync(resolveByDir(jiekTempDir))) {
|
4675
|
+
fs__default.default.mkdirSync(resolveByDir(jiekTempDir), { recursive: true });
|
4676
|
+
}
|
4677
|
+
fs__default.default.writeFileSync(resolveByDir(resolvedOutdir, "package.json"), newJSONString);
|
4678
|
+
fs__default.default.writeFileSync(resolveByDir(jiekTempDir, "package.json"), modifyVersionPackageJSON);
|
4679
|
+
fs__default.default.writeFileSync(resolveByDir("package.json"), withPublishConfigDirectoryOldJSONString);
|
4680
|
+
const allBuildFiles = fs__default.default.readdirSync(resolveByDir(resolvedOutdir), { recursive: true }).filter((file) => typeof file === "string").filter((file) => file !== "package.json");
|
4681
|
+
for (const file of allBuildFiles) {
|
4682
|
+
const filepath = resolveByDir(resolvedOutdir, file);
|
4683
|
+
const stat = fs__default.default.statSync(filepath);
|
4684
|
+
if (stat.isDirectory()) {
|
4685
|
+
const existsIndexFile = allBuildFiles.some(
|
4686
|
+
(f) => [
|
4687
|
+
path__default.default.join(file, "index.js"),
|
4688
|
+
path__default.default.join(file, "index.mjs"),
|
4689
|
+
path__default.default.join(file, "index.cjs")
|
4690
|
+
].includes(f)
|
4691
|
+
);
|
4692
|
+
if (existsIndexFile) {
|
4693
|
+
const cpDistPath = resolveByDir(resolvedOutdir, resolvedOutdir, file);
|
4694
|
+
const pkgJSONPath = resolveByDir(resolvedOutdir, file, "package.json");
|
4695
|
+
const relativePath = path__default.default.relative(filepath, cpDistPath);
|
4696
|
+
const { type } = manifest;
|
4697
|
+
fs__default.default.writeFileSync(
|
4698
|
+
pkgJSONPath,
|
4699
|
+
JSON.stringify({
|
4700
|
+
type,
|
4701
|
+
main: [relativePath, `index.${type === "module" ? "c" : ""}js`].join("/"),
|
4702
|
+
module: [relativePath, `index.${type === "module" ? "" : "m"}js`].join("/")
|
4703
|
+
})
|
4704
|
+
);
|
4705
|
+
}
|
4706
|
+
}
|
4707
|
+
}
|
4708
|
+
fs__default.default.mkdirSync(resolveByDir(resolvedOutdir, resolvedOutdir));
|
4709
|
+
for (const file of allBuildFiles) {
|
4710
|
+
const filepath = resolveByDir(resolvedOutdir, file);
|
4711
|
+
const newFilepath = resolveByDir(resolvedOutdir, resolvedOutdir, file);
|
4712
|
+
const stat = fs__default.default.statSync(filepath);
|
4713
|
+
if (stat.isDirectory()) {
|
4714
|
+
fs__default.default.mkdirSync(newFilepath, { recursive: true });
|
4592
4715
|
continue;
|
4593
4716
|
}
|
4594
|
-
|
4595
|
-
|
4596
|
-
|
4717
|
+
if (stat.isFile()) {
|
4718
|
+
fs__default.default.cpSync(filepath, newFilepath);
|
4719
|
+
fs__default.default.rmSync(filepath);
|
4720
|
+
}
|
4721
|
+
}
|
4722
|
+
if (oldJSON.files) {
|
4723
|
+
if (!Array.isArray(oldJSON.files)) {
|
4724
|
+
throw new Error(`${dir}/package.json files field must be an array`);
|
4725
|
+
}
|
4726
|
+
if (Array.isArray(oldJSON.files) && oldJSON.files.every((file) => typeof file !== "string")) {
|
4727
|
+
throw new Error(`${dir}/package.json files field must be an array of string`);
|
4597
4728
|
}
|
4598
|
-
childProcess__namespace.execSync(args.join(" "), {
|
4599
|
-
cwd: dir,
|
4600
|
-
stdio: "inherit"
|
4601
|
-
});
|
4602
|
-
const modifyVersionPackageJSON = jsoncParser.applyEdits(oldJSONString, jsoncParser.modify(oldJSONString, ["version"], newVersion, {}));
|
4603
|
-
fs__default.default.writeFileSync(path__default.default.join(dir, "package.json.bak"), modifyVersionPackageJSON);
|
4604
|
-
} finally {
|
4605
|
-
fs__default.default.unlinkSync(path__default.default.join(dir, "package.json"));
|
4606
|
-
fs__default.default.renameSync(path__default.default.join(dir, "package.json.bak"), path__default.default.join(dir, "package.json"));
|
4607
4729
|
}
|
4730
|
+
const resolvedOutdirAbs = resolveByDir(resolvedOutdir);
|
4731
|
+
const files = (oldJSON.files ?? fs__default.default.readdirSync(resolveByDir("."))).filter((file) => file === "node_modules" || resolveByDir(file) !== resolvedOutdirAbs);
|
4732
|
+
for (const file of files) {
|
4733
|
+
const path2 = resolveByDir(file);
|
4734
|
+
try {
|
4735
|
+
const stat = fs__default.default.statSync(path2);
|
4736
|
+
if (stat.isDirectory()) {
|
4737
|
+
fs__default.default.cpSync(path2, resolveByDir(resolvedOutdir, file), { recursive: true });
|
4738
|
+
continue;
|
4739
|
+
}
|
4740
|
+
if (stat.isFile()) {
|
4741
|
+
fs__default.default.cpSync(path2, resolveByDir(resolvedOutdir, file));
|
4742
|
+
continue;
|
4743
|
+
}
|
4744
|
+
} catch (e) {
|
4745
|
+
console.warn(String(e));
|
4746
|
+
continue;
|
4747
|
+
}
|
4748
|
+
throw new Error(`file type of ${path2} is not supported`);
|
4749
|
+
}
|
4750
|
+
});
|
4751
|
+
}
|
4752
|
+
async function postpublish() {
|
4753
|
+
await forEachSelectedProjectsGraphEntries((dir) => {
|
4754
|
+
const jiekTempDir = path__default.default.resolve(dir, "node_modules/.jiek/.tmp");
|
4755
|
+
const packageJSON = path__default.default.resolve(dir, "package.json");
|
4756
|
+
const jiekTempPackageJSON = path__default.default.resolve(jiekTempDir, "package.json");
|
4757
|
+
if (fs__default.default.existsSync(jiekTempPackageJSON)) {
|
4758
|
+
fs__default.default.copyFileSync(jiekTempPackageJSON, packageJSON);
|
4759
|
+
fs__default.default.rmSync(jiekTempPackageJSON);
|
4760
|
+
console.log(`${dir}/package.json has been restored`);
|
4761
|
+
} else {
|
4762
|
+
throw new Error(
|
4763
|
+
`jiek temp \`${dir}/package.json\` not found, please confirm the jiek pre-publish command has been executed`
|
4764
|
+
);
|
4765
|
+
}
|
4766
|
+
});
|
4767
|
+
}
|
4768
|
+
commander.program.action(async () => {
|
4769
|
+
const {
|
4770
|
+
npm_lifecycle_event: NPM_LIFECYCLE_EVENT
|
4771
|
+
} = process.env;
|
4772
|
+
switch (NPM_LIFECYCLE_EVENT) {
|
4773
|
+
case "prepublish":
|
4774
|
+
await prepublish();
|
4775
|
+
break;
|
4776
|
+
case "postpublish":
|
4777
|
+
await postpublish();
|
4778
|
+
break;
|
4779
|
+
default:
|
4780
|
+
commander.program.help();
|
4608
4781
|
}
|
4609
|
-
actionDone();
|
4610
4782
|
});
|
4783
|
+
commander.program.command("prepublish").action(prepublish);
|
4784
|
+
commander.program.command("postpublish").action(postpublish);
|