jiek 2.0.0 → 2.0.2-alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +35 -6
- package/README.md +0 -78
- package/bin/jiek-build.js +0 -16
- package/bin/jiek.js +0 -13
- package/dist/cli-only-build.cjs +0 -716
- package/dist/cli-only-build.d.cts +0 -91
- package/dist/cli-only-build.d.ts +0 -91
- package/dist/cli-only-build.js +0 -708
- package/dist/cli.cjs +0 -4888
- package/dist/cli.d.cts +0 -67
- package/dist/cli.d.ts +0 -67
- package/dist/cli.js +0 -4857
- package/dist/index.cjs +0 -5
- package/dist/index.d.cts +0 -165
- package/dist/index.d.ts +0 -165
- package/dist/index.js +0 -3
- package/dist/rollup/index.cjs +0 -4893
- package/dist/rollup/index.d.cts +0 -10
- package/dist/rollup/index.d.ts +0 -10
- package/dist/rollup/index.js +0 -4880
- 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/src/cli-only-build.ts
DELETED
package/src/cli.ts
DELETED
package/src/commands/base.ts
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
import { program } from 'commander'
|
2
|
-
import pkg from 'jiek/package.json'
|
3
|
-
|
4
|
-
import { filterDescription } from '#~/commands/descriptions.ts'
|
5
|
-
import { IS_WORKSPACE } from '#~/commands/meta.ts'
|
6
|
-
import { type } from '#~/utils/filterSupport.ts'
|
7
|
-
|
8
|
-
program
|
9
|
-
.name('jk/jiek')
|
10
|
-
.version(pkg.version)
|
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
DELETED
@@ -1,462 +0,0 @@
|
|
1
|
-
import fs from 'node:fs'
|
2
|
-
import { createRequire } from 'node:module'
|
3
|
-
import path from 'node:path'
|
4
|
-
|
5
|
-
import { MultiBar, Presets } from 'cli-progress'
|
6
|
-
import { program } from 'commander'
|
7
|
-
import { execaCommand } from 'execa'
|
8
|
-
|
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
|
-
|
17
|
-
import type { RollupProgressEvent, TemplateOptions } from '../rollup/base'
|
18
|
-
import { BUILDER_TYPE_PACKAGE_NAME_MAP, BUILDER_TYPES } from '../rollup/base'
|
19
|
-
|
20
|
-
declare module 'jiek' {
|
21
|
-
export interface Config {
|
22
|
-
build?: TemplateOptions & {
|
23
|
-
/**
|
24
|
-
* Whether to run in silent mode, only active when configured in the workspace root or cwd.
|
25
|
-
*
|
26
|
-
* @default false
|
27
|
-
*/
|
28
|
-
silent?: boolean
|
29
|
-
}
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
const FILE_TEMPLATE = (manifest: unknown) => (`
|
34
|
-
module.exports = require('jiek/rollup').template(${JSON.stringify(manifest, null, 2)})
|
35
|
-
`.trimStart())
|
36
|
-
|
37
|
-
const require = createRequire(import.meta.url)
|
38
|
-
|
39
|
-
const isDefault = process.env.JIEK_IS_ONLY_BUILD === 'true'
|
40
|
-
|
41
|
-
const description = `
|
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.' : ''}
|
45
|
-
`.trim()
|
46
|
-
|
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]
|
54
|
-
/**
|
55
|
-
* The output directory of the build, which relative to the target subpackage root directory.
|
56
|
-
* Support with variables: 'PKG_NAME',
|
57
|
-
* .e.g. 'dist/{{PKG_NAME}}'.
|
58
|
-
*
|
59
|
-
* @default 'dist'
|
60
|
-
*/
|
61
|
-
outdir: string
|
62
|
-
watch: boolean
|
63
|
-
silent: boolean
|
64
|
-
verbose: boolean
|
65
|
-
entries?: string
|
66
|
-
external?: string
|
67
|
-
noJs: boolean
|
68
|
-
noDts: boolean
|
69
|
-
noMin: boolean
|
70
|
-
/**
|
71
|
-
* Do not clean the output directory before building.
|
72
|
-
*/
|
73
|
-
noClean: boolean
|
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'
|
122
|
-
}
|
123
|
-
|
124
|
-
function parseBoolean(v?: unknown) {
|
125
|
-
if (v === undefined) return true
|
126
|
-
return Boolean(v)
|
127
|
-
}
|
128
|
-
|
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
|
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')
|
167
|
-
.option('-o, --outdir <OUTDIR>', outdirDescription, String, 'dist')
|
168
|
-
.option('-e, --entries <ENTRIES>', entriesDescription)
|
169
|
-
.option('--external <EXTERNAL>', 'Specify the external dependencies of the package.', String)
|
170
|
-
.option('-nj, --noJs', 'Do not output js files.', parseBoolean)
|
171
|
-
.option('-nd, --noDts', 'Do not output dts files.', parseBoolean)
|
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
|
-
)
|
183
|
-
.option('-nc, --noClean', 'Do not clean the output directory before building.', parseBoolean)
|
184
|
-
.option(
|
185
|
-
'-om, --onlyMin',
|
186
|
-
'Only output minify files, but dts files will still be output, it only replaces the js files.',
|
187
|
-
parseBoolean
|
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)
|
192
|
-
.option('-s, --silent', "Don't display logs.", parseBoolean)
|
193
|
-
.option('-v, --verbose', 'Display debug logs.', parseBoolean)
|
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
|
-
}
|
229
|
-
let shouldPassThrough = false
|
230
|
-
|
231
|
-
const passThroughOptions = process.argv
|
232
|
-
.reduce(
|
233
|
-
(acc, value) => {
|
234
|
-
if (shouldPassThrough) {
|
235
|
-
acc.push(value)
|
236
|
-
}
|
237
|
-
if (value === '--') {
|
238
|
-
shouldPassThrough = true
|
239
|
-
}
|
240
|
-
return acc
|
241
|
-
},
|
242
|
-
[] as string[]
|
243
|
-
)
|
244
|
-
const { build } = loadConfig()
|
245
|
-
silent = silent ?? build?.silent ?? false
|
246
|
-
|
247
|
-
if (withoutMin && onlyMin) {
|
248
|
-
throw new Error('Cannot use both --without-minify and --only-minify')
|
249
|
-
}
|
250
|
-
if (onlyMin && withoutJs) {
|
251
|
-
throw new Error('Cannot use --without-js and --only-minify at the same time')
|
252
|
-
}
|
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
|
-
}
|
261
|
-
const env = {
|
262
|
-
...process.env,
|
263
|
-
JIEK_BUILDER: type,
|
264
|
-
JIEK_OUT_DIR: outdir,
|
265
|
-
JIEK_CLEAN: String(!noClean),
|
266
|
-
JIEK_ENTRIES: entries,
|
267
|
-
JIEK_EXTERNAL: external,
|
268
|
-
JIEK_WITHOUT_JS: String(withoutJs),
|
269
|
-
JIEK_WITHOUT_DTS: String(withoutDts),
|
270
|
-
JIEK_WITHOUT_MINIFY: String(withoutMin),
|
271
|
-
JIEK_ONLY_MINIFY: String(onlyMin),
|
272
|
-
JIEK_MINIFY_TYPE: minifyType,
|
273
|
-
JIEK_TSCONFIG: tsconfig,
|
274
|
-
JIEK_DTSCONFIG: dtsconfig
|
275
|
-
}
|
276
|
-
|
277
|
-
const multiBars = new MultiBar({
|
278
|
-
clearOnComplete: false,
|
279
|
-
hideCursor: true,
|
280
|
-
format: '- {bar} | {status} | {pkgName} | {input} | {message}'
|
281
|
-
}, Presets.shades_classic)
|
282
|
-
|
283
|
-
const buildPackage = async ({
|
284
|
-
wd,
|
285
|
-
value = {}
|
286
|
-
}: ProjectsGraph) => {
|
287
|
-
if (Object.keys(value).length === 0) {
|
288
|
-
throw new Error('no package found')
|
289
|
-
}
|
290
|
-
const wdNodeModules = path.resolve(wd, 'node_modules')
|
291
|
-
if (!fs.existsSync(wdNodeModules)) {
|
292
|
-
fs.mkdirSync(wdNodeModules)
|
293
|
-
}
|
294
|
-
const jiekTempDir = (...paths: string[]) => path.resolve(wdNodeModules, '.jiek', ...paths)
|
295
|
-
if (!fs.existsSync(jiekTempDir())) {
|
296
|
-
fs.mkdirSync(jiekTempDir())
|
297
|
-
}
|
298
|
-
|
299
|
-
const rollupBinaryPath = require.resolve('rollup')
|
300
|
-
.replace(/dist\/rollup.js$/, 'dist/bin/rollup')
|
301
|
-
let i = 0
|
302
|
-
await Promise.all(
|
303
|
-
Object.entries(value).map(async ([dir, manifest]) => {
|
304
|
-
if (!manifest.name) {
|
305
|
-
throw new Error('package.json must have a name field')
|
306
|
-
}
|
307
|
-
|
308
|
-
// TODO support auto build child packages in workspaces
|
309
|
-
const escapeManifestName = manifest.name.replace(/^@/g, '').replace(/\//g, '+')
|
310
|
-
const configFile = jiekTempDir(
|
311
|
-
`${escapeManifestName ?? `anonymous-${i++}`}.rollup.config.js`
|
312
|
-
)
|
313
|
-
fs.writeFileSync(configFile, FILE_TEMPLATE(manifest))
|
314
|
-
const command = [rollupBinaryPath, '--silent', '-c', configFile]
|
315
|
-
if (tsRegisterName) {
|
316
|
-
command.unshift(`node -r ${tsRegisterName}`)
|
317
|
-
}
|
318
|
-
if (watch) {
|
319
|
-
command.push('--watch')
|
320
|
-
}
|
321
|
-
command.push(...passThroughOptions)
|
322
|
-
const child = execaCommand(command.join(' '), {
|
323
|
-
ipc: true,
|
324
|
-
cwd: dir,
|
325
|
-
env: {
|
326
|
-
...env,
|
327
|
-
JIEK_NAME: manifest.name,
|
328
|
-
JIEK_ROOT: wd
|
329
|
-
}
|
330
|
-
})
|
331
|
-
const bars: Record<string, ReturnType<typeof multiBars.create>> = {}
|
332
|
-
const times: Record<string, number> = {}
|
333
|
-
const locks: Record<string, boolean> = {}
|
334
|
-
let inputMaxLen = 10
|
335
|
-
child.on('message', (e: RollupProgressEvent) => {
|
336
|
-
if (e.type === 'debug') console.log(...(Array.isArray(e.data) ? e.data : [e.data]))
|
337
|
-
})
|
338
|
-
!silent && child.on('message', (e: RollupProgressEvent) => {
|
339
|
-
if (e.type === 'init') {
|
340
|
-
const { leafMap, targetsLength } = e.data
|
341
|
-
const leafs = Array
|
342
|
-
.from(leafMap.entries())
|
343
|
-
.flatMap(([input, pathAndCondiions]) =>
|
344
|
-
pathAndCondiions.map(([path, ...conditions]) => ({
|
345
|
-
input,
|
346
|
-
path,
|
347
|
-
conditions
|
348
|
-
}))
|
349
|
-
)
|
350
|
-
let initMessage = `Package '${manifest.name}' has ${targetsLength} targets to build`
|
351
|
-
if (watch) {
|
352
|
-
initMessage += ' and watching...'
|
353
|
-
}
|
354
|
-
console.log(initMessage)
|
355
|
-
leafs.forEach(({ input }) => {
|
356
|
-
inputMaxLen = Math.max(inputMaxLen, input.length)
|
357
|
-
})
|
358
|
-
leafs.forEach(({ input, path }) => {
|
359
|
-
const key = `${input}:${path}`
|
360
|
-
if (bars[key]) return
|
361
|
-
bars[key] = multiBars.create(50, 0, {
|
362
|
-
pkgName: manifest.name,
|
363
|
-
input: input.padEnd(inputMaxLen + 5),
|
364
|
-
status: 'waiting'.padEnd(10)
|
365
|
-
}, {
|
366
|
-
barsize: 20,
|
367
|
-
linewrap: true
|
368
|
-
})
|
369
|
-
})
|
370
|
-
}
|
371
|
-
if (e.type === 'progress') {
|
372
|
-
const {
|
373
|
-
path,
|
374
|
-
tags,
|
375
|
-
input,
|
376
|
-
event,
|
377
|
-
message
|
378
|
-
} = e.data
|
379
|
-
const bar = bars[`${input}:${path}`]
|
380
|
-
if (!bar) return
|
381
|
-
const time = times[`${input}:${path}`]
|
382
|
-
bar.update(
|
383
|
-
{
|
384
|
-
start: 0,
|
385
|
-
resolve: 20,
|
386
|
-
end: 50
|
387
|
-
}[event ?? 'start'] ?? 0,
|
388
|
-
{
|
389
|
-
input: (
|
390
|
-
time
|
391
|
-
? `${input}(x${time.toString().padStart(2, '0')})`
|
392
|
-
: input
|
393
|
-
).padEnd(inputMaxLen + 5),
|
394
|
-
status: event?.padEnd(10),
|
395
|
-
message: `${tags?.join(', ')}: ${message}`
|
396
|
-
}
|
397
|
-
)
|
398
|
-
}
|
399
|
-
if (e.type === 'watchChange') {
|
400
|
-
const {
|
401
|
-
path,
|
402
|
-
input
|
403
|
-
} = e.data
|
404
|
-
const key = `${input}:${path}`
|
405
|
-
const bar = bars[key]
|
406
|
-
if (!bar) return
|
407
|
-
let time = times[key] ?? 1
|
408
|
-
if (!locks[key]) {
|
409
|
-
time += 1
|
410
|
-
times[key] = time
|
411
|
-
setTimeout(() => {
|
412
|
-
locks[key] = false
|
413
|
-
}, 100)
|
414
|
-
bar.update(0, {
|
415
|
-
input: `${input}(x${time.toString().padStart(2, '0')})`.padEnd(inputMaxLen + 5),
|
416
|
-
status: 'watching'.padEnd(10),
|
417
|
-
message: 'watching...'
|
418
|
-
})
|
419
|
-
}
|
420
|
-
locks[key] = true
|
421
|
-
}
|
422
|
-
})
|
423
|
-
await new Promise<void>((resolve, reject) => {
|
424
|
-
let errorStr = ''
|
425
|
-
child.stderr?.on('data', (data) => {
|
426
|
-
errorStr += data
|
427
|
-
})
|
428
|
-
child.once('exit', (code) =>
|
429
|
-
code === 0
|
430
|
-
? resolve()
|
431
|
-
: reject(new Error(`rollup build failed:\n${errorStr}`)))
|
432
|
-
verbose && child.stdout?.pipe(process.stdout)
|
433
|
-
})
|
434
|
-
})
|
435
|
-
)
|
436
|
-
}
|
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
|
-
]
|
452
|
-
try {
|
453
|
-
if (filters.length > 0) {
|
454
|
-
const packages = await filterPackagesGraph(filters)
|
455
|
-
await Promise.all(packages.map(buildPackage))
|
456
|
-
} else {
|
457
|
-
await buildPackage(await getSelectedProjectsGraph())
|
458
|
-
}
|
459
|
-
} finally {
|
460
|
-
multiBars.stop()
|
461
|
-
}
|
462
|
-
})
|
@@ -1,17 +0,0 @@
|
|
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
|
-
|
13
|
-
export const outdirDescription = `
|
14
|
-
The output directory of the build, which relative to the target subpackage root directory.
|
15
|
-
Support with variables: 'PKG_NAME',
|
16
|
-
.e.g. 'dist/{{PKG_NAME}}'.
|
17
|
-
`.trim()
|