jiek 1.1.12 → 2.0.0
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 +53 -106
- package/bin/jiek-build.js +16 -0
- package/dist/cli-only-build.cjs +716 -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 +708 -0
- package/dist/cli.cjs +219 -565
- package/dist/cli.d.cts +0 -65
- package/dist/cli.d.ts +0 -65
- package/dist/cli.js +219 -565
- package/dist/index.d.cts +27 -0
- package/dist/index.d.ts +27 -0
- package/dist/rollup/index.cjs +102 -49
- package/dist/rollup/index.js +102 -47
- package/package.json +28 -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 +200 -39
- package/src/commands/descriptions.ts +12 -0
- package/src/commands/meta.ts +5 -0
- package/src/rollup/base.ts +44 -0
- package/src/rollup/index.ts +127 -39
- package/src/utils/filterSupport.ts +2 -6
- package/src/rollup/plugins/globals.ts +0 -34
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.0",
|
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",
|
@@ -36,12 +50,10 @@
|
|
36
50
|
"#~/*": "./src/*"
|
37
51
|
},
|
38
52
|
"dependencies": {
|
39
|
-
"@jiek/rollup-plugin-dts": "^6.1
|
53
|
+
"@jiek/rollup-plugin-dts": "^6.2.1",
|
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,24 @@
|
|
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
|
"optionalDependencies": {
|
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"
|
63
77
|
},
|
64
78
|
"devDependencies": {
|
65
79
|
"@npm/types": "^1.0.2",
|
66
80
|
"@pnpm/filter-workspace-packages": "^7.2.13",
|
67
81
|
"@pnpm/workspace.pkgs-graph": "^2.0.15",
|
82
|
+
"@rollup/plugin-terser": "^0.4.4",
|
68
83
|
"@types/cli-progress": "^3.11.5",
|
69
84
|
"@types/inquirer": "^9.0.7",
|
70
85
|
"@types/js-yaml": "^4.0.9",
|
@@ -73,10 +88,12 @@
|
|
73
88
|
"micromatch": "^4.0.5",
|
74
89
|
"node-sass": "^9.0.0",
|
75
90
|
"postcss": "^8.4.47",
|
76
|
-
"rollup-plugin-postcss": "^4.0.2"
|
91
|
+
"rollup-plugin-postcss": "^4.0.2",
|
92
|
+
"rollup-plugin-esbuild": "^6.1.0",
|
93
|
+
"rollup-plugin-swc3": "^0.12.1"
|
77
94
|
},
|
78
95
|
"scripts": {
|
79
|
-
"prepublish": "
|
96
|
+
"prepublish": "jb --noMin"
|
80
97
|
},
|
81
98
|
"main": "./dist/index.cjs",
|
82
99
|
"module": "./dist/index.js",
|
package/src/cli.ts
CHANGED
package/src/commands/base.ts
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
import { program } from 'commander'
|
2
2
|
import pkg from 'jiek/package.json'
|
3
3
|
|
4
|
+
import { filterDescription } from '#~/commands/descriptions.ts'
|
5
|
+
import { IS_WORKSPACE } from '#~/commands/meta.ts'
|
6
|
+
import { type } from '#~/utils/filterSupport.ts'
|
7
|
+
|
4
8
|
program
|
9
|
+
.name('jk/jiek')
|
5
10
|
.version(pkg.version)
|
6
|
-
.description(pkg.description)
|
7
|
-
.option('--root <root>', 'root path')
|
8
|
-
.option('-c, --config-path <configPath>', 'config path')
|
11
|
+
.description(`${pkg.description} - Version ${pkg.version}`)
|
12
|
+
.option('--root <root>', 'The root path of the project')
|
13
|
+
.option('-c, --config-path <configPath>', 'Custom jiek config path')
|
14
|
+
|
15
|
+
if (type !== '' && IS_WORKSPACE) {
|
16
|
+
program
|
17
|
+
.option('-f, --filter <filter>', filterDescription)
|
18
|
+
}
|
package/src/commands/build.ts
CHANGED
@@ -6,13 +6,16 @@ import { MultiBar, Presets } from 'cli-progress'
|
|
6
6
|
import { program } from 'commander'
|
7
7
|
import { execaCommand } from 'execa'
|
8
8
|
|
9
|
-
import {
|
9
|
+
import { entriesDescription, filterDescription, outdirDescription } from '#~/commands/descriptions.ts'
|
10
|
+
import { IS_WORKSPACE } from '#~/commands/meta.ts'
|
11
|
+
import type { ProjectsGraph } from '#~/utils/filterSupport.ts'
|
12
|
+
import { filterPackagesGraph, getSelectedProjectsGraph } from '#~/utils/filterSupport.ts'
|
13
|
+
import { getWD } from '#~/utils/getWD.ts'
|
14
|
+
import { loadConfig } from '#~/utils/loadConfig.ts'
|
15
|
+
import { tsRegisterName } from '#~/utils/tsRegister.ts'
|
16
|
+
|
10
17
|
import type { RollupProgressEvent, TemplateOptions } from '../rollup/base'
|
11
|
-
import
|
12
|
-
import { filterPackagesGraph, getSelectedProjectsGraph } from '../utils/filterSupport'
|
13
|
-
import { loadConfig } from '../utils/loadConfig'
|
14
|
-
import { tsRegisterName } from '../utils/tsRegister'
|
15
|
-
import { outdirDescription } from './descriptions'
|
18
|
+
import { BUILDER_TYPE_PACKAGE_NAME_MAP, BUILDER_TYPES } from '../rollup/base'
|
16
19
|
|
17
20
|
declare module 'jiek' {
|
18
21
|
export interface Config {
|
@@ -33,13 +36,21 @@ module.exports = require('jiek/rollup').template(${JSON.stringify(manifest, null
|
|
33
36
|
|
34
37
|
const require = createRequire(import.meta.url)
|
35
38
|
|
39
|
+
const isDefault = process.env.JIEK_IS_ONLY_BUILD === 'true'
|
40
|
+
|
36
41
|
const description = `
|
37
|
-
Build the package according to the 'exports' field
|
38
|
-
If you want to rewrite the rollup command options, you can pass the options after '--'.
|
39
|
-
|
42
|
+
Build the package according to the 'exports' field from the package.json.
|
43
|
+
If you want to rewrite the \`rollup\` command options, you can pass the options after '--'.
|
44
|
+
${isDefault ? 'This command is the default command.' : ''}
|
40
45
|
`.trim()
|
41
46
|
|
42
|
-
interface BuildOptions
|
47
|
+
interface BuildOptions {
|
48
|
+
/**
|
49
|
+
* Auto-detect the builder from the installed dependencies.
|
50
|
+
* If the builder is not installed, it will prompt the user to install it.
|
51
|
+
* If exists multiple builders, it will fall back to the 'esbuild'.
|
52
|
+
*/
|
53
|
+
type?: typeof BUILDER_TYPES[number]
|
43
54
|
/**
|
44
55
|
* The output directory of the build, which relative to the target subpackage root directory.
|
45
56
|
* Support with variables: 'PKG_NAME',
|
@@ -48,9 +59,11 @@ interface BuildOptions extends Record<string, unknown> {
|
|
48
59
|
* @default 'dist'
|
49
60
|
*/
|
50
61
|
outdir: string
|
62
|
+
watch: boolean
|
51
63
|
silent: boolean
|
52
|
-
entries: string
|
53
64
|
verbose: boolean
|
65
|
+
entries?: string
|
66
|
+
external?: string
|
54
67
|
noJs: boolean
|
55
68
|
noDts: boolean
|
56
69
|
noMin: boolean
|
@@ -59,6 +72,53 @@ interface BuildOptions extends Record<string, unknown> {
|
|
59
72
|
*/
|
60
73
|
noClean: boolean
|
61
74
|
onlyMin: boolean
|
75
|
+
/**
|
76
|
+
* The type of minify, support 'terser' and 'builder'.
|
77
|
+
*
|
78
|
+
* @default 'builder'
|
79
|
+
*/
|
80
|
+
minType?: string
|
81
|
+
/**
|
82
|
+
* The path of the tsconfig file which is used to generate js and dts files.
|
83
|
+
* If not specified, it will be loaded from:
|
84
|
+
* - ./tsconfig.json
|
85
|
+
* - ./tsconfig.dts.json
|
86
|
+
* - ./tsconfig.build.json
|
87
|
+
*/
|
88
|
+
tsconfig?: string
|
89
|
+
/**
|
90
|
+
* The path of the tsconfig file which is used to generate dts files.
|
91
|
+
* If not specified, it will be loaded from:
|
92
|
+
* - ./tsconfig.json
|
93
|
+
* - ./tsconfig.dts.json
|
94
|
+
*/
|
95
|
+
dtsconfig?: string
|
96
|
+
}
|
97
|
+
|
98
|
+
async function checkDependency(dependency: string) {
|
99
|
+
try {
|
100
|
+
require.resolve(dependency)
|
101
|
+
} catch (e) {
|
102
|
+
console.error(`The package '${dependency}' is not installed, please install it first.`)
|
103
|
+
const answer = prompt('Do you want to install it now? (Y/n)', 'Y')
|
104
|
+
const { notWorkspace } = getWD()
|
105
|
+
if (answer === 'Y') {
|
106
|
+
await execaCommand(`pnpm install -${notWorkspace ? '' : 'w'}D ${dependency}`)
|
107
|
+
} else {
|
108
|
+
return
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
let DEFAULT_BUILDER_TYPE: typeof BUILDER_TYPES[number]
|
114
|
+
Object.entries(BUILDER_TYPE_PACKAGE_NAME_MAP).forEach(([type, packageName]) => {
|
115
|
+
try {
|
116
|
+
require.resolve(packageName)
|
117
|
+
DEFAULT_BUILDER_TYPE = type as typeof BUILDER_TYPES[number]
|
118
|
+
} catch { /* empty */ }
|
119
|
+
})
|
120
|
+
if (!DEFAULT_BUILDER_TYPE!) {
|
121
|
+
DEFAULT_BUILDER_TYPE = 'esbuild'
|
62
122
|
}
|
63
123
|
|
64
124
|
function parseBoolean(v?: unknown) {
|
@@ -66,38 +126,109 @@ function parseBoolean(v?: unknown) {
|
|
66
126
|
return Boolean(v)
|
67
127
|
}
|
68
128
|
|
69
|
-
|
70
|
-
|
129
|
+
const buildFilterDescription = `
|
130
|
+
${filterDescription}
|
131
|
+
If you pass the --filter option, it will merge into the filters of the command.
|
132
|
+
`.trim()
|
133
|
+
|
134
|
+
const buildEntriesDescription = `
|
135
|
+
${entriesDescription}
|
136
|
+
If you pass the --entries option, it will merge into the entries of the command.
|
137
|
+
`.trim()
|
138
|
+
|
139
|
+
const command = isDefault
|
140
|
+
? program
|
141
|
+
.name('jb/jiek-build')
|
142
|
+
.helpCommand(false)
|
143
|
+
: program
|
144
|
+
|
145
|
+
if (IS_WORKSPACE) {
|
146
|
+
if (isDefault) {
|
147
|
+
command.argument('[filters]', buildFilterDescription)
|
148
|
+
} else {
|
149
|
+
command.command('build [filters]')
|
150
|
+
}
|
151
|
+
} else {
|
152
|
+
if (isDefault) {
|
153
|
+
command.argument('[entries]', buildEntriesDescription)
|
154
|
+
} else {
|
155
|
+
command.command('build [entries]')
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
command
|
71
160
|
.description(description)
|
161
|
+
.option('-t, --type <TYPE>', `The type of build, support ${BUILDER_TYPES.map(s => `"${s}"`).join(', ')}.`, v => {
|
162
|
+
if (!BUILDER_TYPES.includes(v as any)) {
|
163
|
+
throw new Error(`The value of 'type' must be ${BUILDER_TYPES.map(s => `"${s}"`).join(', ')}`)
|
164
|
+
}
|
165
|
+
return String(v)
|
166
|
+
}, 'esbuild')
|
72
167
|
.option('-o, --outdir <OUTDIR>', outdirDescription, String, 'dist')
|
73
|
-
.option('-e, --entries <ENTRIES>',
|
168
|
+
.option('-e, --entries <ENTRIES>', entriesDescription)
|
169
|
+
.option('--external <EXTERNAL>', 'Specify the external dependencies of the package.', String)
|
74
170
|
.option('-nj, --noJs', 'Do not output js files.', parseBoolean)
|
75
171
|
.option('-nd, --noDts', 'Do not output dts files.', parseBoolean)
|
76
172
|
.option('-nm, --noMin', 'Do not output minify files.', parseBoolean)
|
173
|
+
.option(
|
174
|
+
'--minType <MINTYPE>',
|
175
|
+
'The type of minify, support "builder" and "terser".',
|
176
|
+
v => {
|
177
|
+
if (!['builder', 'terser'].includes(v)) {
|
178
|
+
throw new Error('The value of `minType` must be "builder" or "terser"')
|
179
|
+
}
|
180
|
+
return String(v)
|
181
|
+
}
|
182
|
+
)
|
77
183
|
.option('-nc, --noClean', 'Do not clean the output directory before building.', parseBoolean)
|
78
184
|
.option(
|
79
185
|
'-om, --onlyMin',
|
80
186
|
'Only output minify files, but dts files will still be output, it only replaces the js files.',
|
81
187
|
parseBoolean
|
82
188
|
)
|
189
|
+
.option('--tsconfig <TSCONFIG>', 'The path of the tsconfig file which is used to generate js and dts files.', String)
|
190
|
+
.option('--dtsconfig <DTSCONFIG>', 'The path of the tsconfig file which is used to generate dts files.', String)
|
191
|
+
.option('-w, --watch', 'Watch the file changes.', parseBoolean)
|
83
192
|
.option('-s, --silent', "Don't display logs.", parseBoolean)
|
84
193
|
.option('-v, --verbose', 'Display debug logs.', parseBoolean)
|
85
|
-
.action(async ({
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
194
|
+
.action(async (commandFiltersOrEntries: string | undefined, options: BuildOptions) => {
|
195
|
+
/* eslint-disable prefer-const */
|
196
|
+
let {
|
197
|
+
type,
|
198
|
+
outdir,
|
199
|
+
watch,
|
200
|
+
silent,
|
201
|
+
verbose,
|
202
|
+
entries: optionEntries,
|
203
|
+
external,
|
204
|
+
noJs: withoutJs,
|
205
|
+
noDts: withoutDts,
|
206
|
+
noMin: withoutMin,
|
207
|
+
minType: minifyType,
|
208
|
+
noClean,
|
209
|
+
onlyMin,
|
210
|
+
tsconfig,
|
211
|
+
dtsconfig
|
212
|
+
} = options
|
213
|
+
/* eslint-enable prefer-const */
|
214
|
+
const resolvedType = type ?? DEFAULT_BUILDER_TYPE
|
215
|
+
if (!withoutJs) {
|
216
|
+
await checkDependency(BUILDER_TYPE_PACKAGE_NAME_MAP[resolvedType]!)
|
217
|
+
if (minifyType === 'builder') {
|
218
|
+
minifyType = resolvedType
|
219
|
+
}
|
220
|
+
}
|
221
|
+
if (!withoutMin) {
|
222
|
+
await checkDependency(
|
223
|
+
{
|
224
|
+
...BUILDER_TYPE_PACKAGE_NAME_MAP,
|
225
|
+
terser: '@rollup/plugin-terser'
|
226
|
+
}[resolvedType]!
|
227
|
+
)
|
228
|
+
}
|
96
229
|
let shouldPassThrough = false
|
97
230
|
|
98
|
-
const passThroughOptions =
|
99
|
-
.parseOptions(process.argv)
|
100
|
-
.unknown
|
231
|
+
const passThroughOptions = process.argv
|
101
232
|
.reduce(
|
102
233
|
(acc, value) => {
|
103
234
|
if (shouldPassThrough) {
|
@@ -110,7 +241,6 @@ program
|
|
110
241
|
},
|
111
242
|
[] as string[]
|
112
243
|
)
|
113
|
-
actionRestore()
|
114
244
|
const { build } = loadConfig()
|
115
245
|
silent = silent ?? build?.silent ?? false
|
116
246
|
|
@@ -121,15 +251,27 @@ program
|
|
121
251
|
throw new Error('Cannot use --without-js and --only-minify at the same time')
|
122
252
|
}
|
123
253
|
|
254
|
+
let entries: string | undefined = [
|
255
|
+
optionEntries,
|
256
|
+
IS_WORKSPACE ? undefined : commandFiltersOrEntries
|
257
|
+
].filter(Boolean).join(',')
|
258
|
+
if (entries.length === 0) {
|
259
|
+
entries = undefined
|
260
|
+
}
|
124
261
|
const env = {
|
125
262
|
...process.env,
|
263
|
+
JIEK_BUILDER: type,
|
126
264
|
JIEK_OUT_DIR: outdir,
|
127
265
|
JIEK_CLEAN: String(!noClean),
|
128
266
|
JIEK_ENTRIES: entries,
|
267
|
+
JIEK_EXTERNAL: external,
|
129
268
|
JIEK_WITHOUT_JS: String(withoutJs),
|
130
269
|
JIEK_WITHOUT_DTS: String(withoutDts),
|
131
270
|
JIEK_WITHOUT_MINIFY: String(withoutMin),
|
132
|
-
JIEK_ONLY_MINIFY: String(onlyMin)
|
271
|
+
JIEK_ONLY_MINIFY: String(onlyMin),
|
272
|
+
JIEK_MINIFY_TYPE: minifyType,
|
273
|
+
JIEK_TSCONFIG: tsconfig,
|
274
|
+
JIEK_DTSCONFIG: dtsconfig
|
133
275
|
}
|
134
276
|
|
135
277
|
const multiBars = new MultiBar({
|
@@ -169,12 +311,15 @@ program
|
|
169
311
|
`${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
|
170
312
|
)
|
171
313
|
fs.writeFileSync(configFile, FILE_TEMPLATE(manifest))
|
172
|
-
|
314
|
+
const command = [rollupBinaryPath, '--silent', '-c', configFile]
|
173
315
|
if (tsRegisterName) {
|
174
|
-
|
316
|
+
command.unshift(`node -r ${tsRegisterName}`)
|
317
|
+
}
|
318
|
+
if (watch) {
|
319
|
+
command.push('--watch')
|
175
320
|
}
|
176
|
-
|
177
|
-
const child = execaCommand(command, {
|
321
|
+
command.push(...passThroughOptions)
|
322
|
+
const child = execaCommand(command.join(' '), {
|
178
323
|
ipc: true,
|
179
324
|
cwd: dir,
|
180
325
|
env: {
|
@@ -202,7 +347,11 @@ program
|
|
202
347
|
conditions
|
203
348
|
}))
|
204
349
|
)
|
205
|
-
|
350
|
+
let initMessage = `Package '${manifest.name}' has ${targetsLength} targets to build`
|
351
|
+
if (watch) {
|
352
|
+
initMessage += ' and watching...'
|
353
|
+
}
|
354
|
+
console.log(initMessage)
|
206
355
|
leafs.forEach(({ input }) => {
|
207
356
|
inputMaxLen = Math.max(inputMaxLen, input.length)
|
208
357
|
})
|
@@ -285,9 +434,23 @@ program
|
|
285
434
|
})
|
286
435
|
)
|
287
436
|
}
|
288
|
-
const
|
437
|
+
const commandFilters = IS_WORKSPACE ? commandFiltersOrEntries : undefined
|
438
|
+
const filters = [
|
439
|
+
...new Set([
|
440
|
+
...(program.getOptionValue('filter') as string | undefined)
|
441
|
+
?.split(',')
|
442
|
+
.map(s => s.trim())
|
443
|
+
.filter(s => s.length > 0)
|
444
|
+
?? [],
|
445
|
+
...commandFilters
|
446
|
+
?.split(',')
|
447
|
+
.map(s => s.trim())
|
448
|
+
.filter(s => s.length > 0)
|
449
|
+
?? []
|
450
|
+
])
|
451
|
+
]
|
289
452
|
try {
|
290
|
-
if (filters) {
|
453
|
+
if (filters.length > 0) {
|
291
454
|
const packages = await filterPackagesGraph(filters)
|
292
455
|
await Promise.all(packages.map(buildPackage))
|
293
456
|
} else {
|
@@ -296,6 +459,4 @@ program
|
|
296
459
|
} finally {
|
297
460
|
multiBars.stop()
|
298
461
|
}
|
299
|
-
|
300
|
-
actionDone()
|
301
462
|
})
|
@@ -1,3 +1,15 @@
|
|
1
|
+
export const entriesDescription = `
|
2
|
+
Specify the build entry-points of the package.json's 'exports' field.
|
3
|
+
Support glob pattern and array.
|
4
|
+
.e.g. '.', './*', './sub/*', './a,./b'.
|
5
|
+
`.trim()
|
6
|
+
|
7
|
+
export const filterDescription = `
|
8
|
+
Filter the packages from the workspace.
|
9
|
+
Support fuzzy match and array.
|
10
|
+
.e.g. 'core,utils'.
|
11
|
+
`.trim()
|
12
|
+
|
1
13
|
export const outdirDescription = `
|
2
14
|
The output directory of the build, which relative to the target subpackage root directory.
|
3
15
|
Support with variables: 'PKG_NAME',
|
package/src/rollup/base.ts
CHANGED
@@ -17,6 +17,13 @@ export interface ConfigGenerateContext {
|
|
17
17
|
|
18
18
|
export type OutputControl = boolean | ((context: ConfigGenerateContext) => boolean)
|
19
19
|
|
20
|
+
export const BUILDER_TYPES = ['esbuild', 'swc'] as const
|
21
|
+
|
22
|
+
export const BUILDER_TYPE_PACKAGE_NAME_MAP = {
|
23
|
+
esbuild: 'rollup-plugin-esbuild',
|
24
|
+
swc: 'rollup-plugin-swc3'
|
25
|
+
}
|
26
|
+
|
20
27
|
export interface TemplateOptions {
|
21
28
|
/**
|
22
29
|
* When the user configures type: module, the generated output from entry points that don't
|
@@ -27,6 +34,21 @@ export interface TemplateOptions {
|
|
27
34
|
* @default true
|
28
35
|
*/
|
29
36
|
crossModuleConvertor?: boolean
|
37
|
+
/**
|
38
|
+
* Auto-detect the builder from the installed dependencies.
|
39
|
+
* If the builder is not installed, it will prompt the user to install it.
|
40
|
+
* If exists multiple builders, it will fall back to the 'esbuild'.
|
41
|
+
*
|
42
|
+
* @default 'esbuild'
|
43
|
+
*/
|
44
|
+
builder?:
|
45
|
+
| typeof BUILDER_TYPES[number]
|
46
|
+
| ({
|
47
|
+
type: 'esbuild'
|
48
|
+
} & import('rollup-plugin-esbuild').Options)
|
49
|
+
| ({
|
50
|
+
type: 'swc'
|
51
|
+
} & import('rollup-plugin-swc3').PluginOptions)
|
30
52
|
output?: {
|
31
53
|
/**
|
32
54
|
* @default true
|
@@ -35,6 +57,24 @@ export interface TemplateOptions {
|
|
35
57
|
* When minify is set to 'only-minify', the output will direct output minified files.
|
36
58
|
*/
|
37
59
|
minify?: boolean | 'only-minify'
|
60
|
+
minifyOptions?:
|
61
|
+
| typeof BUILDER_TYPES[number]
|
62
|
+
| 'terser'
|
63
|
+
| (
|
64
|
+
{
|
65
|
+
type: 'terser'
|
66
|
+
} & import('@rollup/plugin-terser').Options
|
67
|
+
)
|
68
|
+
| (
|
69
|
+
{
|
70
|
+
type: 'esbuild'
|
71
|
+
} & Parameters<typeof import('rollup-plugin-esbuild').minify>[0]
|
72
|
+
)
|
73
|
+
| (
|
74
|
+
{
|
75
|
+
type: 'swc'
|
76
|
+
} & Parameters<typeof import('rollup-plugin-swc3').minify>[0]
|
77
|
+
)
|
38
78
|
/**
|
39
79
|
* @default 'dist'
|
40
80
|
*/
|
@@ -44,6 +84,10 @@ export interface TemplateOptions {
|
|
44
84
|
js?: OutputControl
|
45
85
|
dts?: OutputControl
|
46
86
|
}
|
87
|
+
/**
|
88
|
+
* Set the external dependencies of the package.
|
89
|
+
*/
|
90
|
+
external?: (string | RegExp)[]
|
47
91
|
plugins?:
|
48
92
|
| InputPluginOption
|
49
93
|
| ((type: 'js' | 'dts', context: ConfigGenerateContext) => InputPluginOption)
|