jiek 1.1.13 → 2.0.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/README.md +34 -84
- package/bin/jiek-build.js +16 -0
- package/dist/cli-only-build.cjs +743 -0
- package/dist/cli-only-build.d.cts +91 -0
- package/dist/cli-only-build.d.ts +91 -0
- package/dist/cli-only-build.js +735 -0
- package/dist/cli.cjs +211 -560
- package/dist/cli.d.cts +0 -69
- package/dist/cli.d.ts +0 -69
- package/dist/cli.js +211 -560
- package/dist/index.d.cts +23 -0
- package/dist/index.d.ts +23 -0
- package/dist/rollup/index.cjs +86 -46
- package/dist/rollup/index.js +86 -44
- package/package.json +54 -11
- package/src/cli-only-build.ts +7 -0
- package/src/cli.ts +1 -7
- package/src/commands/base.ts +13 -3
- package/src/commands/build.ts +197 -39
- package/src/commands/descriptions.ts +12 -0
- package/src/commands/meta.ts +5 -0
- package/src/rollup/base.ts +40 -0
- package/src/rollup/index.ts +106 -37
- package/src/utils/filterSupport.ts +2 -6
package/dist/index.d.cts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import * as _rollup_plugin_terser from '@rollup/plugin-terser';
|
2
|
+
import * as rollup_plugin_swc3 from 'rollup-plugin-swc3';
|
3
|
+
import * as rollup_plugin_esbuild from 'rollup-plugin-esbuild';
|
1
4
|
import { InputPluginOption, OutputOptions } from 'rollup';
|
2
5
|
|
3
6
|
type Mapping2ROO<K extends keyof OutputOptions> = OutputOptions[K] | {
|
@@ -14,6 +17,7 @@ interface ConfigGenerateContext {
|
|
14
17
|
conditionals: string[];
|
15
18
|
}
|
16
19
|
type OutputControl = boolean | ((context: ConfigGenerateContext) => boolean);
|
20
|
+
declare const BUILDER_TYPES: readonly ["esbuild", "swc"];
|
17
21
|
interface TemplateOptions {
|
18
22
|
/**
|
19
23
|
* When the user configures type: module, the generated output from entry points that don't
|
@@ -24,6 +28,18 @@ interface TemplateOptions {
|
|
24
28
|
* @default true
|
25
29
|
*/
|
26
30
|
crossModuleConvertor?: boolean;
|
31
|
+
/**
|
32
|
+
* Auto-detect the builder from the installed dependencies.
|
33
|
+
* If the builder is not installed, it will prompt the user to install it.
|
34
|
+
* If exists multiple builders, it will fall back to the 'esbuild'.
|
35
|
+
*
|
36
|
+
* @default 'esbuild'
|
37
|
+
*/
|
38
|
+
builder?: typeof BUILDER_TYPES[number] | ({
|
39
|
+
type: 'esbuild';
|
40
|
+
} & rollup_plugin_esbuild.Options) | ({
|
41
|
+
type: 'swc';
|
42
|
+
} & rollup_plugin_swc3.PluginOptions);
|
27
43
|
output?: {
|
28
44
|
/**
|
29
45
|
* @default true
|
@@ -32,6 +48,13 @@ interface TemplateOptions {
|
|
32
48
|
* When minify is set to 'only-minify', the output will direct output minified files.
|
33
49
|
*/
|
34
50
|
minify?: boolean | 'only-minify';
|
51
|
+
minifyOptions?: typeof BUILDER_TYPES[number] | 'terser' | ({
|
52
|
+
type: 'terser';
|
53
|
+
} & _rollup_plugin_terser.Options) | ({
|
54
|
+
type: 'esbuild';
|
55
|
+
} & Parameters<typeof rollup_plugin_esbuild.minify>[0]) | ({
|
56
|
+
type: 'swc';
|
57
|
+
} & Parameters<typeof rollup_plugin_swc3.minify>[0]);
|
35
58
|
/**
|
36
59
|
* @default 'dist'
|
37
60
|
*/
|
package/dist/index.d.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import * as _rollup_plugin_terser from '@rollup/plugin-terser';
|
2
|
+
import * as rollup_plugin_swc3 from 'rollup-plugin-swc3';
|
3
|
+
import * as rollup_plugin_esbuild from 'rollup-plugin-esbuild';
|
1
4
|
import { InputPluginOption, OutputOptions } from 'rollup';
|
2
5
|
|
3
6
|
type Mapping2ROO<K extends keyof OutputOptions> = OutputOptions[K] | {
|
@@ -14,6 +17,7 @@ interface ConfigGenerateContext {
|
|
14
17
|
conditionals: string[];
|
15
18
|
}
|
16
19
|
type OutputControl = boolean | ((context: ConfigGenerateContext) => boolean);
|
20
|
+
declare const BUILDER_TYPES: readonly ["esbuild", "swc"];
|
17
21
|
interface TemplateOptions {
|
18
22
|
/**
|
19
23
|
* When the user configures type: module, the generated output from entry points that don't
|
@@ -24,6 +28,18 @@ interface TemplateOptions {
|
|
24
28
|
* @default true
|
25
29
|
*/
|
26
30
|
crossModuleConvertor?: boolean;
|
31
|
+
/**
|
32
|
+
* Auto-detect the builder from the installed dependencies.
|
33
|
+
* If the builder is not installed, it will prompt the user to install it.
|
34
|
+
* If exists multiple builders, it will fall back to the 'esbuild'.
|
35
|
+
*
|
36
|
+
* @default 'esbuild'
|
37
|
+
*/
|
38
|
+
builder?: typeof BUILDER_TYPES[number] | ({
|
39
|
+
type: 'esbuild';
|
40
|
+
} & rollup_plugin_esbuild.Options) | ({
|
41
|
+
type: 'swc';
|
42
|
+
} & rollup_plugin_swc3.PluginOptions);
|
27
43
|
output?: {
|
28
44
|
/**
|
29
45
|
* @default true
|
@@ -32,6 +48,13 @@ interface TemplateOptions {
|
|
32
48
|
* When minify is set to 'only-minify', the output will direct output minified files.
|
33
49
|
*/
|
34
50
|
minify?: boolean | 'only-minify';
|
51
|
+
minifyOptions?: typeof BUILDER_TYPES[number] | 'terser' | ({
|
52
|
+
type: 'terser';
|
53
|
+
} & _rollup_plugin_terser.Options) | ({
|
54
|
+
type: 'esbuild';
|
55
|
+
} & Parameters<typeof rollup_plugin_esbuild.minify>[0]) | ({
|
56
|
+
type: 'swc';
|
57
|
+
} & Parameters<typeof rollup_plugin_swc3.minify>[0]);
|
35
58
|
/**
|
36
59
|
* @default 'dist'
|
37
60
|
*/
|
package/dist/rollup/index.cjs
CHANGED
@@ -8,11 +8,9 @@ var getWorkspaceDir = require('@jiek/utils/getWorkspaceDir');
|
|
8
8
|
var commonjs = require('@rollup/plugin-commonjs');
|
9
9
|
var json = require('@rollup/plugin-json');
|
10
10
|
var pluginNodeResolve = require('@rollup/plugin-node-resolve');
|
11
|
-
var terser = require('@rollup/plugin-terser');
|
12
11
|
var execa = require('execa');
|
13
12
|
var require$$0 = require('util');
|
14
13
|
var require$$0$1 = require('path');
|
15
|
-
var esbuild = require('rollup-plugin-esbuild');
|
16
14
|
var ts = require('typescript');
|
17
15
|
var node_module = require('node:module');
|
18
16
|
var commander = require('commander');
|
@@ -27,10 +25,8 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
27
25
|
var path__default = /*#__PURE__*/_interopDefault(path);
|
28
26
|
var commonjs__default = /*#__PURE__*/_interopDefault(commonjs);
|
29
27
|
var json__default = /*#__PURE__*/_interopDefault(json);
|
30
|
-
var terser__default = /*#__PURE__*/_interopDefault(terser);
|
31
28
|
var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
|
32
29
|
var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
|
33
|
-
var esbuild__default = /*#__PURE__*/_interopDefault(esbuild);
|
34
30
|
var ts__default = /*#__PURE__*/_interopDefault(ts);
|
35
31
|
|
36
32
|
var utils$1 = {};
|
@@ -4255,9 +4251,6 @@ try {
|
|
4255
4251
|
type = "pnpm";
|
4256
4252
|
} catch {
|
4257
4253
|
}
|
4258
|
-
if (type !== "") {
|
4259
|
-
commander.program.option("-f, --filter <filter>", "filter packages, support fuzzy match and array. e.g. -f core,utils");
|
4260
|
-
}
|
4261
4254
|
|
4262
4255
|
let wd;
|
4263
4256
|
let notWorkspace = false;
|
@@ -4503,16 +4496,28 @@ function externalResolver(jsonOrPath = process.cwd()) {
|
|
4503
4496
|
const {
|
4504
4497
|
JIEK_ROOT,
|
4505
4498
|
JIEK_NAME,
|
4499
|
+
JIEK_BUILDER,
|
4506
4500
|
JIEK_ENTRIES,
|
4507
4501
|
JIEK_EXTERNAL,
|
4508
4502
|
JIEK_WITHOUT_JS,
|
4509
4503
|
JIEK_WITHOUT_DTS,
|
4510
4504
|
JIEK_WITHOUT_MINIFY,
|
4505
|
+
JIEK_MINIFY_TYPE,
|
4511
4506
|
JIEK_NO_CLEAN,
|
4512
|
-
JIEK_ONLY_MINIFY
|
4507
|
+
JIEK_ONLY_MINIFY,
|
4508
|
+
JIEK_TSCONFIG,
|
4509
|
+
JIEK_DTSCONFIG
|
4513
4510
|
} = process.env;
|
4514
|
-
const
|
4515
|
-
const
|
4511
|
+
const resolveArrayString = (str) => {
|
4512
|
+
const arr = [
|
4513
|
+
...new Set(
|
4514
|
+
str?.split(",").map((e) => e.trim()).filter((e) => e.length > 0) ?? []
|
4515
|
+
)
|
4516
|
+
];
|
4517
|
+
return arr?.length ? arr : void 0;
|
4518
|
+
};
|
4519
|
+
const entries = resolveArrayString(JIEK_ENTRIES)?.map((e) => ({ "index": "." })[e] ?? e);
|
4520
|
+
const commandExternal = resolveArrayString(JIEK_EXTERNAL)?.map((e) => new RegExp(`^${e}$`));
|
4516
4521
|
const WORKSPACE_ROOT = JIEK_ROOT ?? getWorkspaceDir.getWorkspaceDir();
|
4517
4522
|
const COMMON_OPTIONS = {};
|
4518
4523
|
const COMMON_PLUGINS = [
|
@@ -4524,6 +4529,12 @@ const WITHOUT_MINIFY = JIEK_WITHOUT_MINIFY === "true";
|
|
4524
4529
|
const ONLY_MINIFY = JIEK_ONLY_MINIFY === "true";
|
4525
4530
|
const CLEAN = JIEK_NO_CLEAN !== "true";
|
4526
4531
|
const MINIFY_DEFAULT_VALUE = WITHOUT_MINIFY ? false : ONLY_MINIFY ? "only-minify" : true;
|
4532
|
+
const BUILDER_OPTIONS = {
|
4533
|
+
type: JIEK_BUILDER ?? "esbuild"
|
4534
|
+
};
|
4535
|
+
const MINIFY_OPTIONS = {
|
4536
|
+
type: JIEK_MINIFY_TYPE ?? "esbuild"
|
4537
|
+
};
|
4527
4538
|
const config = loadConfig({
|
4528
4539
|
root: WORKSPACE_ROOT
|
4529
4540
|
}) ?? {};
|
@@ -4573,31 +4584,42 @@ const reveal = (obj, keys) => keys.reduce((acc, key) => {
|
|
4573
4584
|
throw new Error(`key ${key} not found in exports`);
|
4574
4585
|
return acc[key];
|
4575
4586
|
}, obj);
|
4576
|
-
const
|
4577
|
-
|
4578
|
-
|
4579
|
-
|
4580
|
-
|
4581
|
-
|
4582
|
-
|
4583
|
-
|
4584
|
-
|
4585
|
-
|
4586
|
-
|
4587
|
-
}] : [
|
4588
|
-
output,
|
4589
|
-
{
|
4587
|
+
const resolveMinifyOptions = (minifyOptions) => typeof minifyOptions === "string" ? { type: minifyOptions } : minifyOptions ?? { type: "esbuild" };
|
4588
|
+
const resolveBuilderOptions = (builder) => typeof builder === "string" ? { type: builder } : builder ?? { type: "esbuild" };
|
4589
|
+
const resolvedMinifyOptions = resolveMinifyOptions(build.output?.minifyOptions ?? MINIFY_OPTIONS);
|
4590
|
+
const { type: _resolvedMinifyOptionsType, ...noTypeResolvedMinifyOptions } = resolvedMinifyOptions;
|
4591
|
+
const resolvedBuilderOptions = resolveBuilderOptions(build.builder ?? BUILDER_OPTIONS);
|
4592
|
+
const { type: _resolvedBuilderOptionsType, ...noTypeResolvedBuilderOptions } = resolvedBuilderOptions;
|
4593
|
+
const withMinify = (output, minify = build?.output?.minify ?? MINIFY_DEFAULT_VALUE) => {
|
4594
|
+
if (minify === false)
|
4595
|
+
return [output];
|
4596
|
+
const minifyPlugin = resolvedMinifyOptions.type === "esbuild" ? import('rollup-plugin-esbuild').then(({ minify: minify2 }) => minify2(noTypeResolvedMinifyOptions)) : resolvedMinifyOptions.type === "swc" ? import('rollup-plugin-swc3').then(({ minify: minify2 }) => minify2(noTypeResolvedMinifyOptions)) : import('@rollup/plugin-terser').then(({ default: minify2 }) => minify2(noTypeResolvedMinifyOptions));
|
4597
|
+
return minify === "only-minify" ? [{
|
4590
4598
|
...output,
|
4591
|
-
|
4599
|
+
// TODO replace suffix when pubish to npm and the `build.output.minify` is 'only-minify'
|
4600
|
+
// TODO resolve dts output file name
|
4601
|
+
entryFileNames: (chunkInfo) => typeof output.entryFileNames === "function" ? output.entryFileNames(chunkInfo) : (() => {
|
4592
4602
|
throw new Error("entryFileNames must be a function");
|
4593
4603
|
})(),
|
4594
|
-
file: output.file?.replace(/(\.[cm]?js)$/, ".min$1"),
|
4595
4604
|
plugins: [
|
4596
4605
|
...output.plugins ?? [],
|
4597
|
-
|
4606
|
+
minifyPlugin
|
4598
4607
|
]
|
4599
|
-
}
|
4600
|
-
|
4608
|
+
}] : [
|
4609
|
+
output,
|
4610
|
+
{
|
4611
|
+
...output,
|
4612
|
+
entryFileNames: (chunkInfo) => typeof output.entryFileNames === "function" ? output.entryFileNames(chunkInfo).replace(/(\.[cm]?js)$/, ".min$1") : (() => {
|
4613
|
+
throw new Error("entryFileNames must be a function");
|
4614
|
+
})(),
|
4615
|
+
file: output.file?.replace(/(\.[cm]?js)$/, ".min$1"),
|
4616
|
+
plugins: [
|
4617
|
+
...output.plugins ?? [],
|
4618
|
+
minifyPlugin
|
4619
|
+
]
|
4620
|
+
}
|
4621
|
+
];
|
4622
|
+
};
|
4601
4623
|
const generateConfigs = (context, options = {}) => {
|
4602
4624
|
const {
|
4603
4625
|
path: path$1,
|
@@ -4608,7 +4630,7 @@ const generateConfigs = (context, options = {}) => {
|
|
4608
4630
|
pkgIsModule,
|
4609
4631
|
conditionals
|
4610
4632
|
} = context;
|
4611
|
-
const external = [...inputExternal, ...options.external ?? [], ...commandExternal];
|
4633
|
+
const external = [...inputExternal, ...options.external ?? [], ...commandExternal ?? []];
|
4612
4634
|
const isModule = conditionals.includes("import");
|
4613
4635
|
const isCommonJS = conditionals.includes("require");
|
4614
4636
|
const isBrowser = conditionals.includes("browser");
|
@@ -4616,10 +4638,13 @@ const generateConfigs = (context, options = {}) => {
|
|
4616
4638
|
resolveWorkspacePath("tsconfig.json"),
|
4617
4639
|
resolveWorkspacePath("tsconfig.dts.json")
|
4618
4640
|
];
|
4641
|
+
JIEK_TSCONFIG && dtsTSConfigPaths.push(resolveWorkspacePath(JIEK_TSCONFIG));
|
4642
|
+
JIEK_DTSCONFIG && dtsTSConfigPaths.push(resolveWorkspacePath(JIEK_DTSCONFIG));
|
4619
4643
|
const buildTSConfigPaths = [
|
4620
4644
|
...dtsTSConfigPaths,
|
4621
4645
|
resolveWorkspacePath("tsconfig.build.json")
|
4622
4646
|
];
|
4647
|
+
JIEK_TSCONFIG && buildTSConfigPaths.push(resolveWorkspacePath(JIEK_TSCONFIG));
|
4623
4648
|
let dtsTSConfigPath;
|
4624
4649
|
dtsTSConfigPaths.forEach((p) => {
|
4625
4650
|
if (fs__default.default.existsSync(p) && fs__default.default.statSync(p).isFile()) {
|
@@ -4669,6 +4694,22 @@ const generateConfigs = (context, options = {}) => {
|
|
4669
4694
|
const commonPlugins = [];
|
4670
4695
|
if (jsOutput && !WITHOUT_JS) {
|
4671
4696
|
const sourcemap = typeof options?.output?.sourcemap === "object" ? options.output.sourcemap.js : options?.output?.sourcemap;
|
4697
|
+
const builder = resolvedBuilderOptions.type === "esbuild" ? import('rollup-plugin-esbuild').then(
|
4698
|
+
({ default: esbuild }) => esbuild({
|
4699
|
+
sourceMap: sourcemap === "hidden" ? false : !!sourcemap,
|
4700
|
+
tsconfig: buildTSConfigPath,
|
4701
|
+
...noTypeResolvedBuilderOptions
|
4702
|
+
})
|
4703
|
+
) : import('rollup-plugin-swc3').then(
|
4704
|
+
({ default: swc }) => swc({
|
4705
|
+
sourceMaps: typeof sourcemap === "boolean" ? sourcemap : typeof sourcemap === "undefined" ? void 0 : {
|
4706
|
+
hidden: false,
|
4707
|
+
inline: "inline"
|
4708
|
+
}[sourcemap] ?? void 0,
|
4709
|
+
tsconfig: buildTSConfigPath,
|
4710
|
+
...noTypeResolvedBuilderOptions
|
4711
|
+
})
|
4712
|
+
);
|
4672
4713
|
rollupOptions.push({
|
4673
4714
|
input: inputObj,
|
4674
4715
|
external,
|
@@ -4692,10 +4733,7 @@ const generateConfigs = (context, options = {}) => {
|
|
4692
4733
|
minimize: true
|
4693
4734
|
})
|
4694
4735
|
).catch(() => void 0),
|
4695
|
-
|
4696
|
-
sourceMap: sourcemap === "hidden" ? false : !!sourcemap,
|
4697
|
-
tsconfig: buildTSConfigPath
|
4698
|
-
}),
|
4736
|
+
builder,
|
4699
4737
|
commonjs__default.default(),
|
4700
4738
|
progress({
|
4701
4739
|
onEvent: (event, message) => execa.sendMessage(
|
@@ -4752,18 +4790,20 @@ const generateConfigs = (context, options = {}) => {
|
|
4752
4790
|
]
|
4753
4791
|
});
|
4754
4792
|
}
|
4755
|
-
rollupOptions
|
4756
|
-
|
4757
|
-
|
4758
|
-
|
4759
|
-
|
4760
|
-
|
4761
|
-
|
4762
|
-
|
4763
|
-
|
4764
|
-
|
4765
|
-
|
4766
|
-
|
4793
|
+
if (rollupOptions.length > 0) {
|
4794
|
+
rollupOptions[0].plugins = [
|
4795
|
+
{
|
4796
|
+
name: "jiek-plugin-watcher",
|
4797
|
+
watchChange: (id) => execa.sendMessage(
|
4798
|
+
{
|
4799
|
+
type: "watchChange",
|
4800
|
+
data: { id, name: JIEK_NAME, path: path$1, input }
|
4801
|
+
}
|
4802
|
+
)
|
4803
|
+
},
|
4804
|
+
...rollupOptions[0].plugins
|
4805
|
+
];
|
4806
|
+
}
|
4767
4807
|
return rollupOptions;
|
4768
4808
|
};
|
4769
4809
|
function template(packageJSON) {
|
package/dist/rollup/index.js
CHANGED
@@ -6,11 +6,9 @@ import { isWorkspaceDir, getWorkspaceDir } from '@jiek/utils/getWorkspaceDir';
|
|
6
6
|
import commonjs from '@rollup/plugin-commonjs';
|
7
7
|
import json from '@rollup/plugin-json';
|
8
8
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
9
|
-
import terser from '@rollup/plugin-terser';
|
10
9
|
import { sendMessage } from 'execa';
|
11
10
|
import require$$0 from 'util';
|
12
11
|
import require$$0$1 from 'path';
|
13
|
-
import esbuild from 'rollup-plugin-esbuild';
|
14
12
|
import ts from 'typescript';
|
15
13
|
import { createRequire, builtinModules } from 'node:module';
|
16
14
|
import { program } from 'commander';
|
@@ -4240,9 +4238,6 @@ try {
|
|
4240
4238
|
type = "pnpm";
|
4241
4239
|
} catch {
|
4242
4240
|
}
|
4243
|
-
if (type !== "") {
|
4244
|
-
program.option("-f, --filter <filter>", "filter packages, support fuzzy match and array. e.g. -f core,utils");
|
4245
|
-
}
|
4246
4241
|
|
4247
4242
|
let wd;
|
4248
4243
|
let notWorkspace = false;
|
@@ -4488,16 +4483,28 @@ function externalResolver(jsonOrPath = process.cwd()) {
|
|
4488
4483
|
const {
|
4489
4484
|
JIEK_ROOT,
|
4490
4485
|
JIEK_NAME,
|
4486
|
+
JIEK_BUILDER,
|
4491
4487
|
JIEK_ENTRIES,
|
4492
4488
|
JIEK_EXTERNAL,
|
4493
4489
|
JIEK_WITHOUT_JS,
|
4494
4490
|
JIEK_WITHOUT_DTS,
|
4495
4491
|
JIEK_WITHOUT_MINIFY,
|
4492
|
+
JIEK_MINIFY_TYPE,
|
4496
4493
|
JIEK_NO_CLEAN,
|
4497
|
-
JIEK_ONLY_MINIFY
|
4494
|
+
JIEK_ONLY_MINIFY,
|
4495
|
+
JIEK_TSCONFIG,
|
4496
|
+
JIEK_DTSCONFIG
|
4498
4497
|
} = process.env;
|
4499
|
-
const
|
4500
|
-
const
|
4498
|
+
const resolveArrayString = (str) => {
|
4499
|
+
const arr = [
|
4500
|
+
...new Set(
|
4501
|
+
str?.split(",").map((e) => e.trim()).filter((e) => e.length > 0) ?? []
|
4502
|
+
)
|
4503
|
+
];
|
4504
|
+
return arr?.length ? arr : void 0;
|
4505
|
+
};
|
4506
|
+
const entries = resolveArrayString(JIEK_ENTRIES)?.map((e) => ({ "index": "." })[e] ?? e);
|
4507
|
+
const commandExternal = resolveArrayString(JIEK_EXTERNAL)?.map((e) => new RegExp(`^${e}$`));
|
4501
4508
|
const WORKSPACE_ROOT = JIEK_ROOT ?? getWorkspaceDir();
|
4502
4509
|
const COMMON_OPTIONS = {};
|
4503
4510
|
const COMMON_PLUGINS = [
|
@@ -4509,6 +4516,12 @@ const WITHOUT_MINIFY = JIEK_WITHOUT_MINIFY === "true";
|
|
4509
4516
|
const ONLY_MINIFY = JIEK_ONLY_MINIFY === "true";
|
4510
4517
|
const CLEAN = JIEK_NO_CLEAN !== "true";
|
4511
4518
|
const MINIFY_DEFAULT_VALUE = WITHOUT_MINIFY ? false : ONLY_MINIFY ? "only-minify" : true;
|
4519
|
+
const BUILDER_OPTIONS = {
|
4520
|
+
type: JIEK_BUILDER ?? "esbuild"
|
4521
|
+
};
|
4522
|
+
const MINIFY_OPTIONS = {
|
4523
|
+
type: JIEK_MINIFY_TYPE ?? "esbuild"
|
4524
|
+
};
|
4512
4525
|
const config = loadConfig({
|
4513
4526
|
root: WORKSPACE_ROOT
|
4514
4527
|
}) ?? {};
|
@@ -4558,31 +4571,42 @@ const reveal = (obj, keys) => keys.reduce((acc, key) => {
|
|
4558
4571
|
throw new Error(`key ${key} not found in exports`);
|
4559
4572
|
return acc[key];
|
4560
4573
|
}, obj);
|
4561
|
-
const
|
4562
|
-
|
4563
|
-
|
4564
|
-
|
4565
|
-
|
4566
|
-
|
4567
|
-
|
4568
|
-
|
4569
|
-
|
4570
|
-
|
4571
|
-
|
4572
|
-
}] : [
|
4573
|
-
output,
|
4574
|
-
{
|
4574
|
+
const resolveMinifyOptions = (minifyOptions) => typeof minifyOptions === "string" ? { type: minifyOptions } : minifyOptions ?? { type: "esbuild" };
|
4575
|
+
const resolveBuilderOptions = (builder) => typeof builder === "string" ? { type: builder } : builder ?? { type: "esbuild" };
|
4576
|
+
const resolvedMinifyOptions = resolveMinifyOptions(build.output?.minifyOptions ?? MINIFY_OPTIONS);
|
4577
|
+
const { type: _resolvedMinifyOptionsType, ...noTypeResolvedMinifyOptions } = resolvedMinifyOptions;
|
4578
|
+
const resolvedBuilderOptions = resolveBuilderOptions(build.builder ?? BUILDER_OPTIONS);
|
4579
|
+
const { type: _resolvedBuilderOptionsType, ...noTypeResolvedBuilderOptions } = resolvedBuilderOptions;
|
4580
|
+
const withMinify = (output, minify = build?.output?.minify ?? MINIFY_DEFAULT_VALUE) => {
|
4581
|
+
if (minify === false)
|
4582
|
+
return [output];
|
4583
|
+
const minifyPlugin = resolvedMinifyOptions.type === "esbuild" ? import('rollup-plugin-esbuild').then(({ minify: minify2 }) => minify2(noTypeResolvedMinifyOptions)) : resolvedMinifyOptions.type === "swc" ? import('rollup-plugin-swc3').then(({ minify: minify2 }) => minify2(noTypeResolvedMinifyOptions)) : import('@rollup/plugin-terser').then(({ default: minify2 }) => minify2(noTypeResolvedMinifyOptions));
|
4584
|
+
return minify === "only-minify" ? [{
|
4575
4585
|
...output,
|
4576
|
-
|
4586
|
+
// TODO replace suffix when pubish to npm and the `build.output.minify` is 'only-minify'
|
4587
|
+
// TODO resolve dts output file name
|
4588
|
+
entryFileNames: (chunkInfo) => typeof output.entryFileNames === "function" ? output.entryFileNames(chunkInfo) : (() => {
|
4577
4589
|
throw new Error("entryFileNames must be a function");
|
4578
4590
|
})(),
|
4579
|
-
file: output.file?.replace(/(\.[cm]?js)$/, ".min$1"),
|
4580
4591
|
plugins: [
|
4581
4592
|
...output.plugins ?? [],
|
4582
|
-
|
4593
|
+
minifyPlugin
|
4583
4594
|
]
|
4584
|
-
}
|
4585
|
-
|
4595
|
+
}] : [
|
4596
|
+
output,
|
4597
|
+
{
|
4598
|
+
...output,
|
4599
|
+
entryFileNames: (chunkInfo) => typeof output.entryFileNames === "function" ? output.entryFileNames(chunkInfo).replace(/(\.[cm]?js)$/, ".min$1") : (() => {
|
4600
|
+
throw new Error("entryFileNames must be a function");
|
4601
|
+
})(),
|
4602
|
+
file: output.file?.replace(/(\.[cm]?js)$/, ".min$1"),
|
4603
|
+
plugins: [
|
4604
|
+
...output.plugins ?? [],
|
4605
|
+
minifyPlugin
|
4606
|
+
]
|
4607
|
+
}
|
4608
|
+
];
|
4609
|
+
};
|
4586
4610
|
const generateConfigs = (context, options = {}) => {
|
4587
4611
|
const {
|
4588
4612
|
path,
|
@@ -4593,7 +4617,7 @@ const generateConfigs = (context, options = {}) => {
|
|
4593
4617
|
pkgIsModule,
|
4594
4618
|
conditionals
|
4595
4619
|
} = context;
|
4596
|
-
const external = [...inputExternal, ...options.external ?? [], ...commandExternal];
|
4620
|
+
const external = [...inputExternal, ...options.external ?? [], ...commandExternal ?? []];
|
4597
4621
|
const isModule = conditionals.includes("import");
|
4598
4622
|
const isCommonJS = conditionals.includes("require");
|
4599
4623
|
const isBrowser = conditionals.includes("browser");
|
@@ -4601,10 +4625,13 @@ const generateConfigs = (context, options = {}) => {
|
|
4601
4625
|
resolveWorkspacePath("tsconfig.json"),
|
4602
4626
|
resolveWorkspacePath("tsconfig.dts.json")
|
4603
4627
|
];
|
4628
|
+
JIEK_TSCONFIG && dtsTSConfigPaths.push(resolveWorkspacePath(JIEK_TSCONFIG));
|
4629
|
+
JIEK_DTSCONFIG && dtsTSConfigPaths.push(resolveWorkspacePath(JIEK_DTSCONFIG));
|
4604
4630
|
const buildTSConfigPaths = [
|
4605
4631
|
...dtsTSConfigPaths,
|
4606
4632
|
resolveWorkspacePath("tsconfig.build.json")
|
4607
4633
|
];
|
4634
|
+
JIEK_TSCONFIG && buildTSConfigPaths.push(resolveWorkspacePath(JIEK_TSCONFIG));
|
4608
4635
|
let dtsTSConfigPath;
|
4609
4636
|
dtsTSConfigPaths.forEach((p) => {
|
4610
4637
|
if (fs.existsSync(p) && fs.statSync(p).isFile()) {
|
@@ -4654,6 +4681,22 @@ const generateConfigs = (context, options = {}) => {
|
|
4654
4681
|
const commonPlugins = [];
|
4655
4682
|
if (jsOutput && !WITHOUT_JS) {
|
4656
4683
|
const sourcemap = typeof options?.output?.sourcemap === "object" ? options.output.sourcemap.js : options?.output?.sourcemap;
|
4684
|
+
const builder = resolvedBuilderOptions.type === "esbuild" ? import('rollup-plugin-esbuild').then(
|
4685
|
+
({ default: esbuild }) => esbuild({
|
4686
|
+
sourceMap: sourcemap === "hidden" ? false : !!sourcemap,
|
4687
|
+
tsconfig: buildTSConfigPath,
|
4688
|
+
...noTypeResolvedBuilderOptions
|
4689
|
+
})
|
4690
|
+
) : import('rollup-plugin-swc3').then(
|
4691
|
+
({ default: swc }) => swc({
|
4692
|
+
sourceMaps: typeof sourcemap === "boolean" ? sourcemap : typeof sourcemap === "undefined" ? void 0 : {
|
4693
|
+
hidden: false,
|
4694
|
+
inline: "inline"
|
4695
|
+
}[sourcemap] ?? void 0,
|
4696
|
+
tsconfig: buildTSConfigPath,
|
4697
|
+
...noTypeResolvedBuilderOptions
|
4698
|
+
})
|
4699
|
+
);
|
4657
4700
|
rollupOptions.push({
|
4658
4701
|
input: inputObj,
|
4659
4702
|
external,
|
@@ -4677,10 +4720,7 @@ const generateConfigs = (context, options = {}) => {
|
|
4677
4720
|
minimize: true
|
4678
4721
|
})
|
4679
4722
|
).catch(() => void 0),
|
4680
|
-
|
4681
|
-
sourceMap: sourcemap === "hidden" ? false : !!sourcemap,
|
4682
|
-
tsconfig: buildTSConfigPath
|
4683
|
-
}),
|
4723
|
+
builder,
|
4684
4724
|
commonjs(),
|
4685
4725
|
progress({
|
4686
4726
|
onEvent: (event, message) => sendMessage(
|
@@ -4737,18 +4777,20 @@ const generateConfigs = (context, options = {}) => {
|
|
4737
4777
|
]
|
4738
4778
|
});
|
4739
4779
|
}
|
4740
|
-
rollupOptions
|
4741
|
-
|
4742
|
-
|
4743
|
-
|
4744
|
-
|
4745
|
-
|
4746
|
-
|
4747
|
-
|
4748
|
-
|
4749
|
-
|
4750
|
-
|
4751
|
-
|
4780
|
+
if (rollupOptions.length > 0) {
|
4781
|
+
rollupOptions[0].plugins = [
|
4782
|
+
{
|
4783
|
+
name: "jiek-plugin-watcher",
|
4784
|
+
watchChange: (id) => sendMessage(
|
4785
|
+
{
|
4786
|
+
type: "watchChange",
|
4787
|
+
data: { id, name: JIEK_NAME, path, input }
|
4788
|
+
}
|
4789
|
+
)
|
4790
|
+
},
|
4791
|
+
...rollupOptions[0].plugins
|
4792
|
+
];
|
4793
|
+
}
|
4752
4794
|
return rollupOptions;
|
4753
4795
|
};
|
4754
4796
|
function template(packageJSON) {
|
package/package.json
CHANGED
@@ -1,11 +1,20 @@
|
|
1
1
|
{
|
2
2
|
"name": "jiek",
|
3
3
|
"type": "module",
|
4
|
-
"version": "
|
5
|
-
"description": "
|
4
|
+
"version": "2.0.1",
|
5
|
+
"description": "A lightweight toolkit for compiling and managing libraries based on `package.json` metadata and suitable for `Monorepo`.",
|
6
|
+
"author": "YiJie <yijie4188@gmail.com>",
|
7
|
+
"repository": {
|
8
|
+
"url": "nwylzw/jiek",
|
9
|
+
"directory": "packages/jiek"
|
10
|
+
},
|
11
|
+
"homepage": "https://github.com/NWYLZW/jiek/tree/master/packages/jiek#readme",
|
12
|
+
"bugs": "https://github.com/NWYLZW/jiek/issues?q=is%3Aissue+is%3Aopen+jiek",
|
6
13
|
"bin": {
|
7
14
|
"jiek": "bin/jiek.js",
|
8
|
-
"jk": "bin/jiek.js"
|
15
|
+
"jk": "bin/jiek.js",
|
16
|
+
"jiek-build": "bin/jiek-build.js",
|
17
|
+
"jb": "bin/jiek-build.js"
|
9
18
|
},
|
10
19
|
"files": [
|
11
20
|
"dist",
|
@@ -26,6 +35,11 @@
|
|
26
35
|
"require": "./dist/cli.cjs",
|
27
36
|
"default": "./dist/cli.js"
|
28
37
|
},
|
38
|
+
"./cli-only-build": {
|
39
|
+
"source": "./src/cli-only-build.ts",
|
40
|
+
"require": "./dist/cli-only-build.cjs",
|
41
|
+
"default": "./dist/cli-only-build.js"
|
42
|
+
},
|
29
43
|
"./rollup": {
|
30
44
|
"source": "./src/rollup/index.ts",
|
31
45
|
"require": "./dist/rollup/index.cjs",
|
@@ -40,8 +54,6 @@
|
|
40
54
|
"@rollup/plugin-commonjs": "^28.0.0",
|
41
55
|
"@rollup/plugin-json": "^6.0.1",
|
42
56
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
43
|
-
"@rollup/plugin-terser": "^0.4.4",
|
44
|
-
"autoprefixer": "^10.4.16",
|
45
57
|
"cli-progress": "^3.12.0",
|
46
58
|
"commander": "^12.0.0",
|
47
59
|
"detect-indent": "^6.1.0",
|
@@ -50,21 +62,50 @@
|
|
50
62
|
"js-yaml": "^4.1.0",
|
51
63
|
"jsonc-parser": "^3.2.1",
|
52
64
|
"rollup": "4.13.2",
|
53
|
-
"rollup-plugin-esbuild": "^6.1.0",
|
54
|
-
"typescript": "^5.0.0",
|
55
65
|
"@jiek/pkger": "^0.2.0",
|
56
66
|
"@jiek/utils": "^0.2.3"
|
57
67
|
},
|
58
|
-
"
|
68
|
+
"peerDependencies": {
|
69
|
+
"@rollup/plugin-terser": "^0.4.4",
|
59
70
|
"@pnpm/filter-workspace-packages": "^7.2.13",
|
60
71
|
"esbuild-register": "^3.5.0",
|
61
72
|
"postcss": "^8.4.47",
|
62
|
-
"rollup-plugin-postcss": "^4.0.2"
|
73
|
+
"rollup-plugin-postcss": "^4.0.2",
|
74
|
+
"rollup-plugin-esbuild": "^6.1.0",
|
75
|
+
"rollup-plugin-swc3": "^0.12.1",
|
76
|
+
"typescript": "^4.0.0||^5.0.0"
|
77
|
+
},
|
78
|
+
"peerDependenciesMeta": {
|
79
|
+
"@rollup/plugin-terser": {
|
80
|
+
"optional": true
|
81
|
+
},
|
82
|
+
"@pnpm/filter-workspace-packages": {
|
83
|
+
"optional": true
|
84
|
+
},
|
85
|
+
"esbuild-register": {
|
86
|
+
"optional": true
|
87
|
+
},
|
88
|
+
"postcss": {
|
89
|
+
"optional": true
|
90
|
+
},
|
91
|
+
"rollup-plugin-postcss": {
|
92
|
+
"optional": true
|
93
|
+
},
|
94
|
+
"rollup-plugin-esbuild": {
|
95
|
+
"optional": true
|
96
|
+
},
|
97
|
+
"rollup-plugin-swc3": {
|
98
|
+
"optional": true
|
99
|
+
},
|
100
|
+
"typescript": {
|
101
|
+
"optional": true
|
102
|
+
}
|
63
103
|
},
|
64
104
|
"devDependencies": {
|
65
105
|
"@npm/types": "^1.0.2",
|
66
106
|
"@pnpm/filter-workspace-packages": "^7.2.13",
|
67
107
|
"@pnpm/workspace.pkgs-graph": "^2.0.15",
|
108
|
+
"@rollup/plugin-terser": "^0.4.4",
|
68
109
|
"@types/cli-progress": "^3.11.5",
|
69
110
|
"@types/inquirer": "^9.0.7",
|
70
111
|
"@types/js-yaml": "^4.0.9",
|
@@ -73,10 +114,12 @@
|
|
73
114
|
"micromatch": "^4.0.5",
|
74
115
|
"node-sass": "^9.0.0",
|
75
116
|
"postcss": "^8.4.47",
|
76
|
-
"rollup-plugin-postcss": "^4.0.2"
|
117
|
+
"rollup-plugin-postcss": "^4.0.2",
|
118
|
+
"rollup-plugin-esbuild": "^6.1.0",
|
119
|
+
"rollup-plugin-swc3": "^0.12.1"
|
77
120
|
},
|
78
121
|
"scripts": {
|
79
|
-
"prepublish": "
|
122
|
+
"prepublish": "jb --noMin"
|
80
123
|
},
|
81
124
|
"main": "./dist/index.cjs",
|
82
125
|
"module": "./dist/index.js",
|