CAC(npm库之构建CLI)
括号
1. 在Command中:<>表示必须的命令参数,[]表示可选参数
2. 在Options中: <>表示需要字符串/数字值,[]表示该值也可以是true.
否定选项
- 要允许值为 的选项false,您需要手动指定一个否定选项:
cli
.command('build [project]', 'Build a project')
.option('--no-config', 'Disable config file')
.option('--config <path>', 'Use a custom config file')
可选参数
- 命令的最后一个参数可以是可变参数,并且只能是最后一个参数。要使参数可变参数,您必须添加...到参数名称的开头,就像 JavaScript 中的 rest 运算符一样
const cli = require('cac')()
cli
.command('build <entry> [...otherFiles]', 'Build your app')
.option('--foo', 'Foo option')
.action((entry, otherFiles, options) => {
console.log(entry)
console.log(otherFiles)
console.log(options)
})
cli.help()
cli.parse()
默认命令
const cli = require('cac')()
cli
.command('[...files]', 'Build files')
.option('--minimize', 'Minimize output')
.action((files, options) => {
console.log(files)
console.log(options.minimize)
})
cli.parse()
提供一个数组作为选项值
node cli.js --include project-a
# The parsed options will be:
# { include: 'project-a' }
node cli.js --include project-a --include project-b
# The parsed options will be:
# { include: ['project-a', 'project-b'] }
Rollup.config.js文件的作用
- 作用是rollup打包指定使用配置文件
- Rollup的配置文件是一个es6模块,对外暴露的是一个对象;在这个对象里可以配置一些需要的选项
return {
input: 'src/index.ts',
output: {
format: dts || esm ? 'esm' : 'cjs',
file,
exports: 'named',
},
plugins: [
nodeResolvePlugin({
mainFields: dts ? ['types', 'typings'] : ['module', 'main'],
extensions: dts ? ['.d.ts', '.ts'] : ['.js', '.json', '.mjs'],
customResolveOptions: {
moduleDirectories: dts
? ['node_modules/@types', 'node_modules']
: ['node_modules'],
},
}),
!dts && require('@rollup/plugin-commonjs')(),
!dts &&
esbuildPlugin({
target: 'es2017',
}),
dts && dtsPlugin(),
].filter(Boolean),
}