简体中文 | English
命令行工具,一键生成第三方 npm 包项目骨架。
- 内置测试框架 jest。
- 内置 rollup 编译包源码。
当你想新建一个 npm 包项目时,运行如下命令:
npx lib-candy new LIB-NAME
示例:
npx lib-candy new my-third-lib
LIB-NAME 会被用作项目的文件夹名,也会默认作为包名。项目创建完的目录结构如下:
my-third-lib
├── doc
| └── api.md
├── CHANGELOG.md
├── README.md
├── node_modules
├── package-lock.json
├── package.json
└── src
└── index.js
进入到项目目录:
cd my-third-lib
你可以运行内置命令:
此命令编译源码生成 CommonJS,ES module 和 UMD 格式的代码,对应约定配置如下:
- 源码入口文件必须是
src/index.js
。 - 编译后符合 Commonjs 格式的目标文件名及目录可以通过
package.json
中的main
字段指定,默认值是LIB-NAME/lib/index.js
。 - 编译后符合 ES module 格式的目标文件名及目录可以通过
package.json
中的module
字段指定,默认值是LIB-NAME/es/index.js
。 - 编译后 UMD 格式的目标文件名及目录可以通过
package.json
中的browser
字段指定,默认值是LIB-NAME/umd/index.js
。如果要生成 UMD 格式的文件,还必须在package.json
中设置umdName
字段,指定包挂载到全局下的变量名。
示例:
{
"name": "my-third-lib",
"main": "./lib/index.js",
"module": "./es/index.js",
"browser": "./umd/index.js",
"umdName": "MyThirdLib",
}
编译使用 babel 插件,支持编译 @babel/env
包含的 ES 新语法。默认会转换所有的新语法,但是如果你的包有特定的运行环境,可以通过在 package.json
中指定:
browserslist
可以指定目标浏览器(值的格式请参考 browserslist-compatible query)。engines.node
可以指定 nodejs 版本。
示例:
{
"browserslist": "> 0.25%, not dead",
"engines": {
"node": ">= 0.12.0"
}
}
编译不会打包任何 polyfill(除了 regenerator),以减少包的大小。可以通过在 package.json
指定 regeneratorRuntime: true | false
来决定编译是否会把 regenerator 的 polyfill 打入目标文件。如果不指定 regeneratorRuntime
字段,默认是不打入。
此命令封装了 Jest,如何编写测试用例请参考 Jest 官方网站。
支持 Node8.10.0 及以上版本。