bamboo-basket
快速创建一个模板仓库
特性
- 支持 handlebars
- 支持 多模板选择
- 支持 模板文件过滤
- 支持 自定义命令式交互终端
- 支持 向
package.json 添加 动态版本依赖
- 查询依赖的版本信息,根据
latest、next、pre动态获取版本或指定某一版本
- 支持自定义命令行参数
使用
安装
npm i bamboo-basket
yarn add bamboo-basket
pnpm add bamboo-basket
使用
import path from 'node:path'
import bambooBasket, { colors, execa, getDirname, logger } from 'bamboo-basket'
bambooBasket({
root: path.resolve(getDirname(), './'),
templateDir: 'template',
templateList: [
{ name: 'template1', dir: 'template1', description: '描述信息' }
],
argv: {
name: { alias: 'n', type: 'string' }
}
}, async ({ addPrompts, template, pkg, argv, answer, templateName }) => {
console.log(argv)
const { author } = await addPrompts({
name: 'author',
type: 'text',
})
console.log(author, answer.author)
template.addExclude('exclude.js')
template.setData({ author: answer.author })
pkg.setPackage((pkgJson) => {
pkgJson.name = 'my-project'
})
pkg.addDevDependence('foo', '^1.0.0')
return ({ spinner }) => {
}
})
Cli
支持通过 cli 命令执行模板生成
npx basket [target-dir]
命令读取项目根目录下的 basket.config.{ts,js} 文件,获取配置信息,
然后执行模板生成
basket.config.ts
import { defineConfig } from 'bamboo-basket'
export default defineConfig({
root: __dirname,
template: 'template',
}, async ({ addPrompts }) => {
await addPrompts({
name: 'projectName',
type: 'text',
message: 'Input Your Project Name:'
})
})
也可以通过 命令行参数 --config,-c 指定配置文件路径
npx basket ./my-project -c ./scripts/basket.config.ts
示例
请查看 examples
Todo List
Why?
在我日常的开发任务中,经常需要重复创建一系列文件,或者想把某个项目抽象为一个模板,发布到 npm或者私有npm上,通过
npm init xxx-app ./my-project 创建项目。
而这个过程在大多数情况下需要编写很多重复的代码,再包括一部分模板个性化的配置。
所以我将这个过程抽象为一个独立的库,通过这个库,可以很方便的定义一个模板,以及通过这个库快速生成。
LICENSE
MIT