jiek 2.0.1 → 2.0.2-alpha.10
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/{dist/cli-only-build.cjs → cli-only-build.cjs} +19 -87
- package/{dist/cli-only-build.js → cli-only-build.js} +19 -87
- package/{dist/cli.cjs → cli.cjs} +385 -531
- package/cli.d.cts +14 -0
- package/cli.d.ts +14 -0
- package/{dist/cli.js → cli.js} +385 -530
- package/{dist/index.d.cts → index.d.cts} +0 -53
- package/{dist/index.d.ts → index.d.ts} +0 -53
- package/package.json +29 -36
- package/{dist/rollup → rollup}/index.cjs +2 -2
- package/{dist/rollup → rollup}/index.js +2 -2
- package/README.md +0 -78
- package/bin/jiek-build.js +0 -16
- package/bin/jiek.js +0 -13
- package/dist/cli.d.cts +0 -67
- package/dist/cli.d.ts +0 -67
- package/src/cli-only-build.ts +0 -7
- package/src/cli.ts +0 -3
- package/src/commands/base.ts +0 -18
- package/src/commands/build.ts +0 -462
- package/src/commands/descriptions.ts +0 -17
- package/src/commands/init.ts +0 -373
- package/src/commands/meta.ts +0 -5
- package/src/commands/publish.ts +0 -204
- package/src/index.ts +0 -8
- package/src/inner.ts +0 -11
- package/src/rollup/base.ts +0 -137
- package/src/rollup/index.ts +0 -565
- package/src/rollup/plugins/progress.ts +0 -26
- package/src/rollup/plugins/skip.ts +0 -21
- package/src/rollup/utils/commonOptions.ts +0 -9
- package/src/rollup/utils/externalResolver.ts +0 -35
- package/src/rollup/utils/globalResolver.ts +0 -13
- package/src/rollup/utils/withMinify.ts +0 -18
- package/src/utils/filterSupport.ts +0 -91
- package/src/utils/getExports.ts +0 -140
- package/src/utils/getRoot.ts +0 -16
- package/src/utils/getWD.ts +0 -31
- package/src/utils/loadConfig.ts +0 -111
- package/src/utils/recusiveListFiles.ts +0 -13
- package/src/utils/ts.ts +0 -94
- package/src/utils/tsRegister.ts +0 -26
- /package/{dist/cli-only-build.d.cts → cli-only-build.d.cts} +0 -0
- /package/{dist/cli-only-build.d.ts → cli-only-build.d.ts} +0 -0
- /package/{dist/index.cjs → index.cjs} +0 -0
- /package/{dist/index.js → index.js} +0 -0
- /package/{dist/rollup → rollup}/index.d.cts +0 -0
- /package/{dist/rollup → rollup}/index.d.ts +0 -0
package/{dist/cli.js → cli.js}
RENAMED
@@ -1,20 +1,113 @@
|
|
1
|
+
import * as childProcess from 'node:child_process';
|
1
2
|
import fs from 'node:fs';
|
2
|
-
import path, { isAbsolute, relative, resolve
|
3
|
+
import path, { isAbsolute, relative, resolve } from 'node:path';
|
4
|
+
import { TAGS, bump } from '@jiek/utils/bumper';
|
3
5
|
import { program } from 'commander';
|
4
6
|
import detectIndent from 'detect-indent';
|
5
|
-
import inquirer from 'inquirer';
|
6
7
|
import { applyEdits, modify } from 'jsonc-parser';
|
7
|
-
import require$$0 from 'util';
|
8
|
-
import require$$0$1 from 'path';
|
9
|
-
import { isWorkspaceDir, getWorkspaceDir } from '@jiek/utils/getWorkspaceDir';
|
10
8
|
import { createRequire } from 'node:module';
|
11
9
|
import { filterPackagesFromDir } from '@pnpm/filter-workspace-packages';
|
12
10
|
import { load } from 'js-yaml';
|
13
|
-
import
|
14
|
-
import { bump, TAGS } from '@jiek/utils/bumper';
|
11
|
+
import { isWorkspaceDir, getWorkspaceDir } from '@jiek/utils/getWorkspaceDir';
|
15
12
|
import { resolveEntrypoints, filterLeafs, DEFAULT_SKIP_VALUES, entrypoints2Exports } from '@jiek/pkger/entrypoints';
|
13
|
+
import require$$0 from 'util';
|
14
|
+
import require$$0$1 from 'path';
|
16
15
|
import 'jiek/cli-only-build';
|
17
16
|
|
17
|
+
let root;
|
18
|
+
function getRoot() {
|
19
|
+
if (root)
|
20
|
+
return root;
|
21
|
+
const rootOption = program.getOptionValue("root");
|
22
|
+
root = rootOption ? path.isAbsolute(rootOption) ? rootOption : path.resolve(process.cwd(), rootOption) : void 0;
|
23
|
+
return root;
|
24
|
+
}
|
25
|
+
|
26
|
+
let wd;
|
27
|
+
let notWorkspace = false;
|
28
|
+
function getWD() {
|
29
|
+
if (wd)
|
30
|
+
return { wd, notWorkspace };
|
31
|
+
const root = getRoot();
|
32
|
+
if (root !== void 0) {
|
33
|
+
const isWorkspace = isWorkspaceDir(root, type);
|
34
|
+
notWorkspace = !isWorkspace;
|
35
|
+
wd = root;
|
36
|
+
return { wd, notWorkspace };
|
37
|
+
}
|
38
|
+
try {
|
39
|
+
wd = getWorkspaceDir(type);
|
40
|
+
} catch (e) {
|
41
|
+
if ("message" in e && e.message === "workspace root not found") {
|
42
|
+
wd = root;
|
43
|
+
notWorkspace = true;
|
44
|
+
} else {
|
45
|
+
throw e;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
return { wd, notWorkspace };
|
49
|
+
}
|
50
|
+
|
51
|
+
let type = "";
|
52
|
+
try {
|
53
|
+
const require = createRequire(import.meta.url);
|
54
|
+
require.resolve("@pnpm/filter-workspace-packages");
|
55
|
+
type = "pnpm";
|
56
|
+
} catch {
|
57
|
+
}
|
58
|
+
async function getSelectedProjectsGraph(filter = program.getOptionValue("filter")) {
|
59
|
+
let root = getRoot();
|
60
|
+
const { wd, notWorkspace } = getWD();
|
61
|
+
if (notWorkspace) {
|
62
|
+
return {
|
63
|
+
wd,
|
64
|
+
root,
|
65
|
+
value: {
|
66
|
+
[wd]: JSON.parse(fs.readFileSync(path.resolve(wd, "package.json"), "utf-8"))
|
67
|
+
}
|
68
|
+
};
|
69
|
+
}
|
70
|
+
if (type === "pnpm") {
|
71
|
+
const pnpmWorkspaceFilePath = path.resolve(wd, "pnpm-workspace.yaml");
|
72
|
+
const pnpmWorkspaceFileContent = fs.readFileSync(pnpmWorkspaceFilePath, "utf-8");
|
73
|
+
const pnpmWorkspace = load(pnpmWorkspaceFileContent);
|
74
|
+
if (root === wd && !filter) {
|
75
|
+
throw new Error("root path is workspace root, please provide a filter");
|
76
|
+
}
|
77
|
+
if (root === void 0) {
|
78
|
+
root = process.cwd();
|
79
|
+
}
|
80
|
+
if (root !== wd && !filter) {
|
81
|
+
const packageJSONIsExist = fs.existsSync(path.resolve(root, "package.json"));
|
82
|
+
if (!packageJSONIsExist) {
|
83
|
+
throw new Error("root path is not workspace root, please provide a filter");
|
84
|
+
}
|
85
|
+
const packageJSON = JSON.parse(fs.readFileSync(path.resolve(root, "package.json"), "utf-8"));
|
86
|
+
if (!packageJSON.name) {
|
87
|
+
throw new Error("root path is not workspace root, please provide a filter");
|
88
|
+
}
|
89
|
+
filter = packageJSON.name;
|
90
|
+
}
|
91
|
+
const { selectedProjectsGraph } = await filterPackagesFromDir(wd, [{
|
92
|
+
filter: filter ?? "",
|
93
|
+
followProdDepsOnly: true
|
94
|
+
}], {
|
95
|
+
prefix: root,
|
96
|
+
workspaceDir: wd,
|
97
|
+
patterns: pnpmWorkspace.packages
|
98
|
+
});
|
99
|
+
return {
|
100
|
+
wd,
|
101
|
+
root,
|
102
|
+
value: Object.entries(selectedProjectsGraph).reduce((acc, [key, value]) => {
|
103
|
+
acc[key] = value.package.manifest;
|
104
|
+
return acc;
|
105
|
+
}, {})
|
106
|
+
};
|
107
|
+
}
|
108
|
+
throw new Error(`not supported package manager ${type}`);
|
109
|
+
}
|
110
|
+
|
18
111
|
var utils$1 = {};
|
19
112
|
|
20
113
|
var hasRequiredUtils$1;
|
@@ -4121,98 +4214,94 @@ function requireMicromatch () {
|
|
4121
4214
|
|
4122
4215
|
var micromatchExports = requireMicromatch();
|
4123
4216
|
|
4124
|
-
|
4125
|
-
|
4126
|
-
|
4127
|
-
|
4128
|
-
|
4129
|
-
|
4130
|
-
|
4131
|
-
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
const
|
4136
|
-
|
4137
|
-
type
|
4138
|
-
|
4139
|
-
|
4140
|
-
|
4141
|
-
|
4142
|
-
|
4143
|
-
if (notWorkspace) {
|
4144
|
-
return {
|
4145
|
-
wd,
|
4146
|
-
root,
|
4147
|
-
value: {
|
4148
|
-
[wd]: JSON.parse(fs.readFileSync(path.resolve(wd, "package.json"), "utf-8"))
|
4149
|
-
}
|
4150
|
-
};
|
4217
|
+
const intersection = (a, b) => new Set([...a].filter((i) => b.has(i)));
|
4218
|
+
const {
|
4219
|
+
JIEK_OUT_DIR
|
4220
|
+
} = process.env;
|
4221
|
+
const OUTDIR = JIEK_OUT_DIR ?? "dist";
|
4222
|
+
function getOutDirs({
|
4223
|
+
cwd = process.cwd(),
|
4224
|
+
defaultOutdir = OUTDIR,
|
4225
|
+
config,
|
4226
|
+
pkgName
|
4227
|
+
}) {
|
4228
|
+
const { build = {} } = config ?? {};
|
4229
|
+
const outdir = build?.output?.dir;
|
4230
|
+
function resolveOutdir(type) {
|
4231
|
+
const dir = (typeof outdir === "object" ? outdir[type] ?? outdir[{
|
4232
|
+
js: "dts",
|
4233
|
+
dts: "js"
|
4234
|
+
}[type]] : outdir) ?? defaultOutdir;
|
4235
|
+
return (isAbsolute(dir) ? dir : `./${relative(cwd, resolve(cwd, dir))}`).replace("{{PKG_NAME}}", pkgName);
|
4151
4236
|
}
|
4152
|
-
|
4153
|
-
|
4154
|
-
|
4155
|
-
|
4156
|
-
|
4157
|
-
|
4158
|
-
|
4159
|
-
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
4163
|
-
|
4164
|
-
|
4165
|
-
|
4166
|
-
|
4167
|
-
|
4168
|
-
|
4169
|
-
|
4237
|
+
return {
|
4238
|
+
js: resolveOutdir("js"),
|
4239
|
+
dts: resolveOutdir("dts")
|
4240
|
+
};
|
4241
|
+
}
|
4242
|
+
function getExports({
|
4243
|
+
entrypoints,
|
4244
|
+
pkgName,
|
4245
|
+
pkgIsModule,
|
4246
|
+
entries,
|
4247
|
+
config,
|
4248
|
+
dir,
|
4249
|
+
defaultOutdir = OUTDIR,
|
4250
|
+
// FIXME dts support
|
4251
|
+
outdir = getOutDirs({ pkgName, defaultOutdir, config, cwd: dir }).js,
|
4252
|
+
noFilter,
|
4253
|
+
isPublish
|
4254
|
+
}) {
|
4255
|
+
const {
|
4256
|
+
build = {},
|
4257
|
+
publish: {
|
4258
|
+
withSuffix = false,
|
4259
|
+
withSource = true
|
4260
|
+
} = {}
|
4261
|
+
} = config ?? {};
|
4262
|
+
const {
|
4263
|
+
crossModuleConvertor = true
|
4264
|
+
} = build;
|
4265
|
+
const [, resolvedEntrypoints] = resolveEntrypoints(entrypoints);
|
4266
|
+
if (entries) {
|
4267
|
+
Object.entries(resolvedEntrypoints).forEach(([key]) => {
|
4268
|
+
if (!entries.some((e) => micromatchExports.isMatch(key, e, { matchBase: true }))) {
|
4269
|
+
delete resolvedEntrypoints[key];
|
4170
4270
|
}
|
4171
|
-
filter = packageJSON.name;
|
4172
|
-
}
|
4173
|
-
const { selectedProjectsGraph } = await filterPackagesFromDir(wd, [{
|
4174
|
-
filter: filter ?? "",
|
4175
|
-
followProdDepsOnly: true
|
4176
|
-
}], {
|
4177
|
-
prefix: root,
|
4178
|
-
workspaceDir: wd,
|
4179
|
-
patterns: pnpmWorkspace.packages
|
4180
4271
|
});
|
4181
|
-
return {
|
4182
|
-
wd,
|
4183
|
-
root,
|
4184
|
-
value: Object.entries(selectedProjectsGraph).reduce((acc, [key, value]) => {
|
4185
|
-
acc[key] = value.package.manifest;
|
4186
|
-
return acc;
|
4187
|
-
}, {})
|
4188
|
-
};
|
4189
4272
|
}
|
4190
|
-
|
4191
|
-
|
4192
|
-
|
4193
|
-
|
4194
|
-
|
4195
|
-
|
4196
|
-
|
4197
|
-
|
4198
|
-
const root = getRoot();
|
4199
|
-
if (root !== void 0) {
|
4200
|
-
const isWorkspace = isWorkspaceDir(root, type);
|
4201
|
-
notWorkspace = !isWorkspace;
|
4202
|
-
wd = root;
|
4203
|
-
return { wd, notWorkspace };
|
4204
|
-
}
|
4205
|
-
try {
|
4206
|
-
wd = getWorkspaceDir(type);
|
4207
|
-
} catch (e) {
|
4208
|
-
if ("message" in e && e.message === "workspace root not found") {
|
4209
|
-
wd = root;
|
4210
|
-
notWorkspace = true;
|
4211
|
-
} else {
|
4212
|
-
throw e;
|
4273
|
+
const filteredResolvedEntrypoints = noFilter ? resolvedEntrypoints : filterLeafs(
|
4274
|
+
resolvedEntrypoints,
|
4275
|
+
{
|
4276
|
+
skipValue: [
|
4277
|
+
// ignore values that filename starts with `.jk-noentry`
|
4278
|
+
/(^|\/)\.jk-noentry/,
|
4279
|
+
...DEFAULT_SKIP_VALUES
|
4280
|
+
]
|
4213
4281
|
}
|
4214
|
-
|
4215
|
-
|
4282
|
+
);
|
4283
|
+
const crossModuleWithConditional = crossModuleConvertor ? {
|
4284
|
+
import: (opts) => !pkgIsModule && intersection(
|
4285
|
+
new Set(opts.conditionals),
|
4286
|
+
/* @__PURE__ */ new Set(["import", "module"])
|
4287
|
+
).size === 0 ? opts.dist.replace(/\.js$/, ".mjs") : false,
|
4288
|
+
require: (opts) => pkgIsModule && intersection(
|
4289
|
+
new Set(opts.conditionals),
|
4290
|
+
/* @__PURE__ */ new Set(["require", "node"])
|
4291
|
+
).size === 0 ? opts.dist.replace(/\.js$/, ".cjs") : false
|
4292
|
+
} : {};
|
4293
|
+
return [
|
4294
|
+
filteredResolvedEntrypoints,
|
4295
|
+
entrypoints2Exports(filteredResolvedEntrypoints, {
|
4296
|
+
outdir,
|
4297
|
+
withSuffix: isPublish ? withSuffix : void 0,
|
4298
|
+
withSource: isPublish ? withSource : void 0,
|
4299
|
+
withConditional: {
|
4300
|
+
...crossModuleWithConditional
|
4301
|
+
}
|
4302
|
+
}),
|
4303
|
+
outdir
|
4304
|
+
];
|
4216
4305
|
}
|
4217
4306
|
|
4218
4307
|
const require$1 = createRequire(import.meta.url);
|
@@ -4321,394 +4410,65 @@ function loadConfig(dirOrOptions) {
|
|
4321
4410
|
return module.default ?? module;
|
4322
4411
|
}
|
4323
4412
|
|
4324
|
-
const PACKAGE_JSON_TEMPLATE = `{
|
4325
|
-
"name": "",
|
4326
|
-
"version": "0.0.1",
|
4327
|
-
"description": "",
|
4328
|
-
"license": "",
|
4329
|
-
"author": "",
|
4330
|
-
"files": ["dist"],
|
4331
|
-
"exports": {
|
4332
|
-
".": "./src/index.ts"
|
4333
|
-
},
|
4334
|
-
"scripts": {
|
4335
|
-
},
|
4336
|
-
"homepage": "",
|
4337
|
-
"repository": "",
|
4338
|
-
"bugs": ""
|
4339
|
-
}`.trimStart();
|
4340
|
-
const README_TEMPLATE = `# $name
|
4341
|
-
|
4342
|
-
## Installation
|
4343
|
-
|
4344
|
-
\`\`\`bash
|
4345
|
-
npm install $name
|
4346
|
-
# or
|
4347
|
-
pnpm install $name
|
4348
|
-
# or
|
4349
|
-
yarn add $name
|
4350
|
-
\`\`\`
|
4351
|
-
|
4352
|
-
## Usage
|
4353
|
-
|
4354
|
-
|
4355
|
-
## License
|
4356
|
-
|
4357
|
-
$license
|
4358
|
-
`.trimStart();
|
4359
|
-
function getTemplateStr(wd, template) {
|
4360
|
-
let templateString = template ?? PACKAGE_JSON_TEMPLATE;
|
4361
|
-
let isTemplateFile = false;
|
4362
|
-
try {
|
4363
|
-
if (template)
|
4364
|
-
JSON.parse(template);
|
4365
|
-
} catch (e) {
|
4366
|
-
isTemplateFile = true;
|
4367
|
-
}
|
4368
|
-
if (isTemplateFile) {
|
4369
|
-
const templatePath = path.resolve(wd, template);
|
4370
|
-
templateString = fs.readFileSync(templatePath, "utf-8");
|
4371
|
-
}
|
4372
|
-
return templateString;
|
4373
|
-
}
|
4374
|
-
const wdCache = /* @__PURE__ */ new Map();
|
4375
|
-
function getWDPackageJSONFiled(wd, field) {
|
4376
|
-
if (wdCache.has(wd)) {
|
4377
|
-
return wdCache.get(wd)[field];
|
4378
|
-
}
|
4379
|
-
const packageJSONPath = path.resolve(wd, "package.json");
|
4380
|
-
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf-8"));
|
4381
|
-
wdCache.set(wd, packageJSON);
|
4382
|
-
return packageJSON[field];
|
4383
|
-
}
|
4384
|
-
async function getName(named, name, {
|
4385
|
-
wd,
|
4386
|
-
cwd,
|
4387
|
-
workspaceName
|
4388
|
-
}) {
|
4389
|
-
const relativePath = cwd.replace(`${wd}/`, "");
|
4390
|
-
let basename = path.basename(cwd);
|
4391
|
-
if (typeof named === "function") {
|
4392
|
-
return named(name, {
|
4393
|
-
full: wd,
|
4394
|
-
relative: cwd
|
4395
|
-
});
|
4396
|
-
}
|
4397
|
-
let isParentMatched = false;
|
4398
|
-
let matchedKey;
|
4399
|
-
let matchedRule;
|
4400
|
-
if (typeof named === "object") {
|
4401
|
-
const isWD = cwd === wd;
|
4402
|
-
if (isWD) {
|
4403
|
-
const { rule } = await inquirer.prompt({
|
4404
|
-
type: "list",
|
4405
|
-
name: "rule",
|
4406
|
-
message: "choose a rule",
|
4407
|
-
default: "default",
|
4408
|
-
choices: ["default"].concat(Object.keys(named))
|
4409
|
-
});
|
4410
|
-
if (rule !== "default") {
|
4411
|
-
matchedKey = rule;
|
4412
|
-
matchedRule = named[rule];
|
4413
|
-
}
|
4414
|
-
} else {
|
4415
|
-
for (const [key, value] of Object.entries(named)) {
|
4416
|
-
if (micromatchExports.isMatch(relativePath, key)) {
|
4417
|
-
matchedKey = key;
|
4418
|
-
matchedRule = value;
|
4419
|
-
break;
|
4420
|
-
}
|
4421
|
-
if (micromatchExports.isMatch(`${relativePath}/jiek_ignore_dont_use_same_file_name`, key)) {
|
4422
|
-
isParentMatched = true;
|
4423
|
-
matchedKey = key;
|
4424
|
-
matchedRule = value;
|
4425
|
-
break;
|
4426
|
-
}
|
4427
|
-
}
|
4428
|
-
}
|
4429
|
-
}
|
4430
|
-
if (!matchedRule) {
|
4431
|
-
matchedKey = "packages/*";
|
4432
|
-
matchedRule = `@${workspaceName}/$basename`;
|
4433
|
-
}
|
4434
|
-
if (!matchedRule) {
|
4435
|
-
throw new Error("no matched rule");
|
4436
|
-
}
|
4437
|
-
if (!name && isParentMatched) {
|
4438
|
-
basename = await inquirer.prompt({
|
4439
|
-
type: "input",
|
4440
|
-
name: "name",
|
4441
|
-
message: `the matched rule is \`${String(matchedRule)}\`, please input the basename
|
4442
|
-
`
|
4443
|
-
}).then(({ name: name2 }) => name2);
|
4444
|
-
}
|
4445
|
-
if (typeof matchedRule === "function") {
|
4446
|
-
return matchedRule(name, {
|
4447
|
-
full: wd,
|
4448
|
-
relative: cwd,
|
4449
|
-
basename
|
4450
|
-
});
|
4451
|
-
}
|
4452
|
-
if (typeof matchedRule === "string") {
|
4453
|
-
const dirName = name ?? basename;
|
4454
|
-
return [
|
4455
|
-
matchedRule.replace(/\$basename/g, dirName),
|
4456
|
-
matchedKey?.replace(/\/\*$/g, `/${dirName}`)
|
4457
|
-
];
|
4458
|
-
}
|
4459
|
-
throw new Error("no matched rule");
|
4460
|
-
}
|
4461
|
-
program.command("init [name]").option("-t, --template <template>", "the package.json template file path or file content").action(async () => {
|
4462
|
-
const [, name] = program.args;
|
4463
|
-
const cwd = process.cwd();
|
4464
|
-
const { init = {} } = loadConfig() ?? {};
|
4465
|
-
const { wd } = getWD();
|
4466
|
-
const workspaceName = path.basename(wd);
|
4467
|
-
const {
|
4468
|
-
named,
|
4469
|
-
template,
|
4470
|
-
bug = {},
|
4471
|
-
readme: _readme = README_TEMPLATE,
|
4472
|
-
readmeTemplate
|
4473
|
-
} = init;
|
4474
|
-
const resolvedBug = {
|
4475
|
-
template: "bug_report.yml",
|
4476
|
-
labels: ["bug"],
|
4477
|
-
...bug
|
4478
|
-
};
|
4479
|
-
let readme = _readme;
|
4480
|
-
if (readmeTemplate) {
|
4481
|
-
const readmeTemplatePath = path.resolve(wd, readmeTemplate);
|
4482
|
-
readme = fs.readFileSync(readmeTemplatePath, "utf-8");
|
4483
|
-
}
|
4484
|
-
const templateString = getTemplateStr(wd, template);
|
4485
|
-
const { indent = " " } = detectIndent(templateString);
|
4486
|
-
const formattingOptions = {
|
4487
|
-
tabSize: indent.length,
|
4488
|
-
insertSpaces: true
|
4489
|
-
};
|
4490
|
-
const passFields = [
|
4491
|
-
"license",
|
4492
|
-
"author"
|
4493
|
-
];
|
4494
|
-
let newJSONString = templateString;
|
4495
|
-
for (const field of passFields) {
|
4496
|
-
newJSONString = applyEdits(
|
4497
|
-
newJSONString,
|
4498
|
-
modify(
|
4499
|
-
newJSONString,
|
4500
|
-
[field],
|
4501
|
-
getWDPackageJSONFiled(wd, field),
|
4502
|
-
{ formattingOptions }
|
4503
|
-
)
|
4504
|
-
);
|
4505
|
-
}
|
4506
|
-
let [pkgName, pkgDir] = await getName(named, name, {
|
4507
|
-
wd,
|
4508
|
-
cwd,
|
4509
|
-
workspaceName
|
4510
|
-
});
|
4511
|
-
if (!pkgDir) {
|
4512
|
-
const { dir } = await inquirer.prompt({
|
4513
|
-
type: "input",
|
4514
|
-
name: "dir",
|
4515
|
-
message: "package directory",
|
4516
|
-
default: name
|
4517
|
-
});
|
4518
|
-
pkgDir = dir;
|
4519
|
-
}
|
4520
|
-
if (!pkgName) {
|
4521
|
-
const { name: inputName } = await inquirer.prompt({
|
4522
|
-
type: "input",
|
4523
|
-
name: "name",
|
4524
|
-
message: "package name",
|
4525
|
-
default: name
|
4526
|
-
});
|
4527
|
-
pkgName = inputName;
|
4528
|
-
}
|
4529
|
-
newJSONString = applyEdits(newJSONString, modify(newJSONString, ["name"], pkgName, { formattingOptions }));
|
4530
|
-
let pkgRepo = getWDPackageJSONFiled(wd, "repository");
|
4531
|
-
if (typeof pkgRepo === "string") {
|
4532
|
-
pkgRepo = {
|
4533
|
-
type: "git",
|
4534
|
-
url: pkgRepo,
|
4535
|
-
directory: pkgDir
|
4536
|
-
};
|
4537
|
-
}
|
4538
|
-
newJSONString = applyEdits(
|
4539
|
-
newJSONString,
|
4540
|
-
modify(
|
4541
|
-
newJSONString,
|
4542
|
-
["repository"],
|
4543
|
-
pkgRepo,
|
4544
|
-
{ formattingOptions }
|
4545
|
-
)
|
4546
|
-
);
|
4547
|
-
const homepage = `${pkgRepo?.url}/blob/master/${pkgDir}/README.md`;
|
4548
|
-
newJSONString = applyEdits(
|
4549
|
-
newJSONString,
|
4550
|
-
modify(
|
4551
|
-
newJSONString,
|
4552
|
-
["homepage"],
|
4553
|
-
homepage,
|
4554
|
-
{ formattingOptions }
|
4555
|
-
)
|
4556
|
-
);
|
4557
|
-
let labels = resolvedBug.labels;
|
4558
|
-
if (typeof labels === "function") {
|
4559
|
-
labels = labels({
|
4560
|
-
name: pkgName,
|
4561
|
-
dir: pkgDir
|
4562
|
-
});
|
4563
|
-
}
|
4564
|
-
labels.push(`scope:${pkgName}`);
|
4565
|
-
const bugs = `${pkgRepo?.url}/issues/new?template=${resolvedBug.template}&labels=${labels.join(",")}`;
|
4566
|
-
newJSONString = applyEdits(
|
4567
|
-
newJSONString,
|
4568
|
-
modify(
|
4569
|
-
newJSONString,
|
4570
|
-
["bugs"],
|
4571
|
-
bugs,
|
4572
|
-
{ formattingOptions }
|
4573
|
-
)
|
4574
|
-
);
|
4575
|
-
function pkgDirTo(to) {
|
4576
|
-
if (!pkgDir)
|
4577
|
-
throw new Error("pkgDir is not defined");
|
4578
|
-
return path.resolve(pkgDir, to);
|
4579
|
-
}
|
4580
|
-
if (!fs.existsSync(pkgDir))
|
4581
|
-
fs.mkdirSync(pkgDir);
|
4582
|
-
const pkgJSONFilePath = pkgDirTo("package.json");
|
4583
|
-
if (fs.existsSync(pkgJSONFilePath)) {
|
4584
|
-
throw new Error("package.json already exists");
|
4585
|
-
}
|
4586
|
-
fs.writeFileSync(pkgJSONFilePath, newJSONString);
|
4587
|
-
console.log(newJSONString, "written to", pkgJSONFilePath);
|
4588
|
-
const license = getWDPackageJSONFiled(wd, "license");
|
4589
|
-
const readmeFilePath = pkgDirTo("README.md");
|
4590
|
-
if (typeof readme === "function") {
|
4591
|
-
readme = readme({
|
4592
|
-
dir: pkgDir,
|
4593
|
-
packageJson: JSON.parse(newJSONString)
|
4594
|
-
});
|
4595
|
-
}
|
4596
|
-
const readmeContent = readme.replace(/\$name/g, pkgName).replace(/\$license/g, license);
|
4597
|
-
fs.writeFileSync(readmeFilePath, readmeContent);
|
4598
|
-
});
|
4599
|
-
|
4600
|
-
let resolve;
|
4601
|
-
function actionDone() {
|
4602
|
-
resolve();
|
4603
|
-
}
|
4604
|
-
function actionRestore() {
|
4605
|
-
new Promise((r) => resolve = r);
|
4606
|
-
}
|
4607
|
-
|
4608
|
-
const intersection = (a, b) => new Set([...a].filter((i) => b.has(i)));
|
4609
|
-
const {
|
4610
|
-
JIEK_OUT_DIR
|
4611
|
-
} = process.env;
|
4612
|
-
const OUTDIR = JIEK_OUT_DIR ?? "dist";
|
4613
|
-
function getOutDirs({
|
4614
|
-
cwd = process.cwd(),
|
4615
|
-
defaultOutdir = OUTDIR,
|
4616
|
-
config,
|
4617
|
-
pkgName
|
4618
|
-
}) {
|
4619
|
-
const { build = {} } = config ?? {};
|
4620
|
-
const outdir = build?.output?.dir;
|
4621
|
-
function resolveOutdir(type) {
|
4622
|
-
const dir = (typeof outdir === "object" ? outdir[type] ?? outdir[{
|
4623
|
-
js: "dts",
|
4624
|
-
dts: "js"
|
4625
|
-
}[type]] : outdir) ?? defaultOutdir;
|
4626
|
-
return (isAbsolute(dir) ? dir : `./${relative(cwd, resolve$1(cwd, dir))}`).replace("{{PKG_NAME}}", pkgName);
|
4627
|
-
}
|
4628
|
-
return {
|
4629
|
-
js: resolveOutdir("js"),
|
4630
|
-
dts: resolveOutdir("dts")
|
4631
|
-
};
|
4632
|
-
}
|
4633
|
-
function getExports({
|
4634
|
-
entrypoints,
|
4635
|
-
pkgName,
|
4636
|
-
pkgIsModule,
|
4637
|
-
entries,
|
4638
|
-
config,
|
4639
|
-
dir,
|
4640
|
-
defaultOutdir = OUTDIR,
|
4641
|
-
// FIXME dts support
|
4642
|
-
outdir = getOutDirs({ pkgName, defaultOutdir, config, cwd: dir }).js,
|
4643
|
-
noFilter,
|
4644
|
-
isPublish
|
4645
|
-
}) {
|
4646
|
-
const {
|
4647
|
-
build = {},
|
4648
|
-
publish: {
|
4649
|
-
withSuffix = false,
|
4650
|
-
withSource = true
|
4651
|
-
} = {}
|
4652
|
-
} = config ?? {};
|
4653
|
-
const {
|
4654
|
-
crossModuleConvertor = true
|
4655
|
-
} = build;
|
4656
|
-
const [, resolvedEntrypoints] = resolveEntrypoints(entrypoints);
|
4657
|
-
if (entries) {
|
4658
|
-
Object.entries(resolvedEntrypoints).forEach(([key]) => {
|
4659
|
-
if (!entries.some((e) => micromatchExports.isMatch(key, e, { matchBase: true }))) {
|
4660
|
-
delete resolvedEntrypoints[key];
|
4661
|
-
}
|
4662
|
-
});
|
4663
|
-
}
|
4664
|
-
const filteredResolvedEntrypoints = noFilter ? resolvedEntrypoints : filterLeafs(
|
4665
|
-
resolvedEntrypoints,
|
4666
|
-
{
|
4667
|
-
skipValue: [
|
4668
|
-
// ignore values that filename starts with `.jk-noentry`
|
4669
|
-
/(^|\/)\.jk-noentry/,
|
4670
|
-
...DEFAULT_SKIP_VALUES
|
4671
|
-
]
|
4672
|
-
}
|
4673
|
-
);
|
4674
|
-
const crossModuleWithConditional = crossModuleConvertor ? {
|
4675
|
-
import: (opts) => !pkgIsModule && intersection(
|
4676
|
-
new Set(opts.conditionals),
|
4677
|
-
/* @__PURE__ */ new Set(["import", "module"])
|
4678
|
-
).size === 0 ? opts.dist.replace(/\.js$/, ".mjs") : false,
|
4679
|
-
require: (opts) => pkgIsModule && intersection(
|
4680
|
-
new Set(opts.conditionals),
|
4681
|
-
/* @__PURE__ */ new Set(["require", "node"])
|
4682
|
-
).size === 0 ? opts.dist.replace(/\.js$/, ".cjs") : false
|
4683
|
-
} : {};
|
4684
|
-
return [
|
4685
|
-
filteredResolvedEntrypoints,
|
4686
|
-
entrypoints2Exports(filteredResolvedEntrypoints, {
|
4687
|
-
outdir,
|
4688
|
-
withSuffix: isPublish ? withSuffix : void 0,
|
4689
|
-
withSource: isPublish ? withSource : void 0,
|
4690
|
-
withConditional: {
|
4691
|
-
...crossModuleWithConditional
|
4692
|
-
}
|
4693
|
-
}),
|
4694
|
-
outdir
|
4695
|
-
];
|
4696
|
-
}
|
4697
|
-
|
4698
4413
|
const outdirDescription = `
|
4699
4414
|
The output directory of the build, which relative to the target subpackage root directory.
|
4700
4415
|
Support with variables: 'PKG_NAME',
|
4701
4416
|
.e.g. 'dist/{{PKG_NAME}}'.
|
4702
4417
|
`.trim();
|
4703
4418
|
|
4704
|
-
|
4705
|
-
|
4419
|
+
const description = `
|
4420
|
+
Publish package to npm registry, and auto generate exports field and other fields in published package.json.
|
4421
|
+
If you want to through the options to the \`pnpm publish\` command, you can pass the options after '--'.
|
4422
|
+
`.trim();
|
4423
|
+
async function forEachSelectedProjectsGraphEntries(callback) {
|
4706
4424
|
const { value = {} } = await getSelectedProjectsGraph() ?? {};
|
4707
4425
|
const selectedProjectsGraphEntries = Object.entries(value);
|
4708
4426
|
if (selectedProjectsGraphEntries.length === 0) {
|
4709
4427
|
throw new Error("no packages selected");
|
4710
4428
|
}
|
4711
|
-
const
|
4429
|
+
for (const [dir, manifest] of selectedProjectsGraphEntries) {
|
4430
|
+
callback(dir, manifest);
|
4431
|
+
}
|
4432
|
+
}
|
4433
|
+
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 }) => {
|
4434
|
+
let shouldPassThrough = false;
|
4435
|
+
const passThroughOptions = process.argv.reduce(
|
4436
|
+
(acc, value) => {
|
4437
|
+
if (shouldPassThrough) {
|
4438
|
+
acc.push(value);
|
4439
|
+
}
|
4440
|
+
if (value === "--") {
|
4441
|
+
shouldPassThrough = true;
|
4442
|
+
}
|
4443
|
+
return acc;
|
4444
|
+
},
|
4445
|
+
[]
|
4446
|
+
);
|
4447
|
+
await forEachSelectedProjectsGraphEntries((dir) => {
|
4448
|
+
const args = ["pnpm", "publish", "--access", "public", "--no-git-checks"];
|
4449
|
+
if (bumper && TAGS.includes(bumper)) {
|
4450
|
+
args.push("--tag", bumper);
|
4451
|
+
}
|
4452
|
+
args.push(...passThroughOptions);
|
4453
|
+
childProcess.execSync(args.join(" "), {
|
4454
|
+
cwd: dir,
|
4455
|
+
stdio: "inherit",
|
4456
|
+
env: {
|
4457
|
+
...process.env,
|
4458
|
+
JIEK_PUBLISH_OUTDIR: JSON.stringify(outdir),
|
4459
|
+
JIEK_PUBLISH_BUMPER: JSON.stringify(bumper)
|
4460
|
+
}
|
4461
|
+
});
|
4462
|
+
});
|
4463
|
+
});
|
4464
|
+
async function prepublish() {
|
4465
|
+
const {
|
4466
|
+
JIEK_PUBLISH_OUTDIR: outdirEnv,
|
4467
|
+
JIEK_PUBLISH_BUMPER: bumperEnv
|
4468
|
+
} = process.env;
|
4469
|
+
const outdir = outdirEnv ? JSON.parse(outdirEnv) : "dist";
|
4470
|
+
const bumper = bumperEnv ? JSON.parse(bumperEnv) : false;
|
4471
|
+
const generateNewManifest = (dir, manifest) => {
|
4712
4472
|
const { name, type, exports: entrypoints = {} } = manifest;
|
4713
4473
|
if (!name) {
|
4714
4474
|
throw new Error(`package.json in ${dir} must have a name field`);
|
@@ -4729,35 +4489,38 @@ program.command("publish").aliases(["pub", "p"]).option("-b, --bumper <bumper>",
|
|
4729
4489
|
...resolvedEntrypoints,
|
4730
4490
|
...exports
|
4731
4491
|
};
|
4732
|
-
return [
|
4733
|
-
}
|
4734
|
-
const
|
4735
|
-
|
4736
|
-
|
4737
|
-
|
4738
|
-
|
4739
|
-
}
|
4740
|
-
for (const [dir, manifest, resolvedOutdir] of manifests) {
|
4741
|
-
const oldJSONString = fs.readFileSync(path.join(dir, "package.json"), "utf-8");
|
4742
|
-
const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
|
4743
|
-
const newVersion = bumper ? bump(oldJSON.version, bumper) : oldJSON.version;
|
4744
|
-
const { indent = " " } = detectIndent(oldJSONString);
|
4745
|
-
const formattingOptions = {
|
4746
|
-
tabSize: indent.length,
|
4747
|
-
insertSpaces: true
|
4748
|
-
};
|
4492
|
+
return [newManifest, resolvedOutdir];
|
4493
|
+
};
|
4494
|
+
const generateNewPackageJSONString = ({
|
4495
|
+
oldJSONString,
|
4496
|
+
oldJSON,
|
4497
|
+
manifest,
|
4498
|
+
formattingOptions
|
4499
|
+
}) => {
|
4749
4500
|
let newJSONString = oldJSONString;
|
4750
4501
|
newJSONString = applyEdits(
|
4751
4502
|
newJSONString,
|
4752
4503
|
modify(
|
4753
4504
|
newJSONString,
|
4754
|
-
["
|
4755
|
-
|
4505
|
+
["publishConfig", "typesVersions"],
|
4506
|
+
{
|
4507
|
+
"<5.0": {
|
4508
|
+
"*": [
|
4509
|
+
"*",
|
4510
|
+
`./*`,
|
4511
|
+
`./*/index.d.ts`,
|
4512
|
+
`./*/index.d.mts`,
|
4513
|
+
`./*/index.d.cts`
|
4514
|
+
]
|
4515
|
+
}
|
4516
|
+
},
|
4756
4517
|
{ formattingOptions }
|
4757
4518
|
)
|
4758
4519
|
);
|
4759
|
-
for (const [key,
|
4760
|
-
if (
|
4520
|
+
for (const [key, value] of Object.entries(manifest)) {
|
4521
|
+
if (key === "version")
|
4522
|
+
continue;
|
4523
|
+
if (JSON.stringify(value) === JSON.stringify(oldJSON[key]))
|
4761
4524
|
continue;
|
4762
4525
|
if (key !== "exports") {
|
4763
4526
|
newJSONString = applyEdits(
|
@@ -4765,12 +4528,12 @@ program.command("publish").aliases(["pub", "p"]).option("-b, --bumper <bumper>",
|
|
4765
4528
|
modify(
|
4766
4529
|
newJSONString,
|
4767
4530
|
["publishConfig", key],
|
4768
|
-
|
4531
|
+
value,
|
4769
4532
|
{ formattingOptions }
|
4770
4533
|
)
|
4771
4534
|
);
|
4772
4535
|
} else {
|
4773
|
-
const exports =
|
4536
|
+
const exports = value;
|
4774
4537
|
for (const [k, v] of Object.entries(exports)) {
|
4775
4538
|
newJSONString = applyEdits(
|
4776
4539
|
newJSONString,
|
@@ -4812,46 +4575,138 @@ program.command("publish").aliases(["pub", "p"]).option("-b, --bumper <bumper>",
|
|
4812
4575
|
}
|
4813
4576
|
}
|
4814
4577
|
}
|
4815
|
-
|
4816
|
-
|
4817
|
-
|
4818
|
-
|
4819
|
-
|
4820
|
-
{
|
4821
|
-
"<5.0": {
|
4822
|
-
"*": [
|
4823
|
-
"*",
|
4824
|
-
`${resolvedOutdir}/*`,
|
4825
|
-
`${resolvedOutdir}/*/index.d.ts`,
|
4826
|
-
`${resolvedOutdir}/*/index.d.mts`,
|
4827
|
-
`${resolvedOutdir}/*/index.d.cts`
|
4828
|
-
]
|
4829
|
-
}
|
4578
|
+
if (oldJSON["peerDependencies"]) {
|
4579
|
+
const peerDependenciesMeta = Object.keys(oldJSON["peerDependencies"]).reduce(
|
4580
|
+
(acc, key) => {
|
4581
|
+
acc[key] = { optional: true };
|
4582
|
+
return acc;
|
4830
4583
|
},
|
4831
|
-
{
|
4832
|
-
)
|
4584
|
+
{}
|
4585
|
+
);
|
4586
|
+
newJSONString = applyEdits(
|
4587
|
+
newJSONString,
|
4588
|
+
modify(
|
4589
|
+
newJSONString,
|
4590
|
+
["peerDependenciesMeta"],
|
4591
|
+
peerDependenciesMeta,
|
4592
|
+
{ formattingOptions }
|
4593
|
+
)
|
4594
|
+
);
|
4595
|
+
}
|
4596
|
+
if (oldJSON["files"]) {
|
4597
|
+
newJSONString = applyEdits(
|
4598
|
+
newJSONString,
|
4599
|
+
modify(
|
4600
|
+
newJSONString,
|
4601
|
+
["files"],
|
4602
|
+
void 0,
|
4603
|
+
{ formattingOptions }
|
4604
|
+
)
|
4605
|
+
);
|
4606
|
+
}
|
4607
|
+
return newJSONString;
|
4608
|
+
};
|
4609
|
+
await forEachSelectedProjectsGraphEntries((dir, originalManifest) => {
|
4610
|
+
const [manifest, resolvedOutdir] = generateNewManifest(dir, originalManifest);
|
4611
|
+
const resolveByDir = (...paths) => path.resolve(dir, ...paths);
|
4612
|
+
const oldJSONString = fs.readFileSync(resolveByDir("package.json"), "utf-8");
|
4613
|
+
const oldJSON = JSON.parse(oldJSONString) ?? "0.0.0";
|
4614
|
+
if (typeof oldJSON.version !== "string") {
|
4615
|
+
throw new Error(`${dir}/package.json must have a version field with a string value`);
|
4616
|
+
}
|
4617
|
+
const { indent = " " } = detectIndent(oldJSONString);
|
4618
|
+
const formattingOptions = {
|
4619
|
+
tabSize: indent.length,
|
4620
|
+
insertSpaces: true
|
4621
|
+
};
|
4622
|
+
const newVersion = bumper ? bump(oldJSON.version, bumper) : oldJSON.version;
|
4623
|
+
const modifyVersionPackageJSON = applyEdits(
|
4624
|
+
oldJSONString,
|
4625
|
+
modify(oldJSONString, ["version"], newVersion, { formattingOptions })
|
4833
4626
|
);
|
4834
|
-
|
4835
|
-
|
4836
|
-
|
4837
|
-
|
4838
|
-
|
4839
|
-
|
4627
|
+
const newJSONString = generateNewPackageJSONString({
|
4628
|
+
oldJSONString: modifyVersionPackageJSON,
|
4629
|
+
oldJSON: {
|
4630
|
+
...oldJSON,
|
4631
|
+
version: newVersion
|
4632
|
+
},
|
4633
|
+
manifest,
|
4634
|
+
formattingOptions
|
4635
|
+
});
|
4636
|
+
const withPublishConfigDirectoryOldJSONString = applyEdits(
|
4637
|
+
modifyVersionPackageJSON,
|
4638
|
+
modify(modifyVersionPackageJSON, ["publishConfig", "directory"], resolvedOutdir, { formattingOptions })
|
4639
|
+
);
|
4640
|
+
if (oldJSON.files) {
|
4641
|
+
if (!Array.isArray(oldJSON.files)) {
|
4642
|
+
throw new Error(`${dir}/package.json files field must be an array`);
|
4840
4643
|
}
|
4841
|
-
|
4842
|
-
|
4843
|
-
args.push("--tag", bumper);
|
4644
|
+
if (Array.isArray(oldJSON.files) && oldJSON.files.every((file) => typeof file !== "string")) {
|
4645
|
+
throw new Error(`${dir}/package.json files field must be an array of string`);
|
4844
4646
|
}
|
4845
|
-
childProcess.execSync(args.join(" "), {
|
4846
|
-
cwd: dir,
|
4847
|
-
stdio: "inherit"
|
4848
|
-
});
|
4849
|
-
const modifyVersionPackageJSON = applyEdits(oldJSONString, modify(oldJSONString, ["version"], newVersion, {}));
|
4850
|
-
fs.writeFileSync(path.join(dir, "package.json.bak"), modifyVersionPackageJSON);
|
4851
|
-
} finally {
|
4852
|
-
fs.unlinkSync(path.join(dir, "package.json"));
|
4853
|
-
fs.renameSync(path.join(dir, "package.json.bak"), path.join(dir, "package.json"));
|
4854
4647
|
}
|
4648
|
+
const resolvedOutdirAbs = resolveByDir(resolvedOutdir);
|
4649
|
+
const files = oldJSON.files ?? fs.readdirSync(resolveByDir(".")).filter((file) => file !== "node_modules" && resolveByDir(file) !== resolvedOutdirAbs);
|
4650
|
+
for (const file of files) {
|
4651
|
+
const path2 = resolveByDir(file);
|
4652
|
+
try {
|
4653
|
+
const stat = fs.statSync(path2);
|
4654
|
+
if (stat.isDirectory()) {
|
4655
|
+
fs.symlinkSync(path2, resolveByDir(resolvedOutdir, file), "dir");
|
4656
|
+
continue;
|
4657
|
+
}
|
4658
|
+
if (stat.isFile()) {
|
4659
|
+
fs.symlinkSync(path2, resolveByDir(resolvedOutdir, file), "file");
|
4660
|
+
continue;
|
4661
|
+
}
|
4662
|
+
} catch (e) {
|
4663
|
+
console.warn(String(e));
|
4664
|
+
continue;
|
4665
|
+
}
|
4666
|
+
throw new Error(`file type of ${path2} is not supported`);
|
4667
|
+
}
|
4668
|
+
if (!fs.existsSync(resolveByDir(resolvedOutdir))) {
|
4669
|
+
fs.mkdirSync(resolveByDir(resolvedOutdir));
|
4670
|
+
}
|
4671
|
+
const jiekTempDir = resolveByDir("node_modules/.jiek/.tmp");
|
4672
|
+
if (!fs.existsSync(resolveByDir(jiekTempDir))) {
|
4673
|
+
fs.mkdirSync(resolveByDir(jiekTempDir), { recursive: true });
|
4674
|
+
}
|
4675
|
+
fs.writeFileSync(resolveByDir(resolvedOutdir, "package.json"), newJSONString);
|
4676
|
+
fs.writeFileSync(resolveByDir(jiekTempDir, "package.json"), modifyVersionPackageJSON);
|
4677
|
+
fs.writeFileSync(resolveByDir("package.json"), withPublishConfigDirectoryOldJSONString);
|
4678
|
+
});
|
4679
|
+
}
|
4680
|
+
async function postpublish() {
|
4681
|
+
await forEachSelectedProjectsGraphEntries((dir) => {
|
4682
|
+
const jiekTempDir = path.resolve(dir, "node_modules/.jiek/.tmp");
|
4683
|
+
const packageJSON = path.resolve(dir, "package.json");
|
4684
|
+
const jiekTempPackageJSON = path.resolve(jiekTempDir, "package.json");
|
4685
|
+
if (fs.existsSync(jiekTempPackageJSON)) {
|
4686
|
+
fs.copyFileSync(jiekTempPackageJSON, packageJSON);
|
4687
|
+
fs.rmSync(jiekTempPackageJSON);
|
4688
|
+
console.log(`${dir}/package.json has been restored`);
|
4689
|
+
} else {
|
4690
|
+
throw new Error(
|
4691
|
+
`jiek temp \`${dir}/package.json\` not found, please confirm the jiek pre-publish command has been executed`
|
4692
|
+
);
|
4693
|
+
}
|
4694
|
+
});
|
4695
|
+
}
|
4696
|
+
program.action(async () => {
|
4697
|
+
const {
|
4698
|
+
npm_lifecycle_event: NPM_LIFECYCLE_EVENT
|
4699
|
+
} = process.env;
|
4700
|
+
switch (NPM_LIFECYCLE_EVENT) {
|
4701
|
+
case "prepublish":
|
4702
|
+
await prepublish();
|
4703
|
+
break;
|
4704
|
+
case "postpublish":
|
4705
|
+
await postpublish();
|
4706
|
+
break;
|
4707
|
+
default:
|
4708
|
+
program.help();
|
4855
4709
|
}
|
4856
|
-
actionDone();
|
4857
4710
|
});
|
4711
|
+
program.command("prepublish").action(prepublish);
|
4712
|
+
program.command("postpublish").action(postpublish);
|