Skip to content

sixwinds/lib-candy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lib-candy

简体中文 | English

命令行工具,一键生成第三方 npm 包项目骨架。

  • 内置测试框架 jest。
  • 内置 rollup 编译包源码。

使用方法

当你想新建一个 npm 包项目时,运行如下命令:

npx

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

你可以运行内置命令:

npm run build

此命令编译源码生成 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",
}

ES新语法

编译使用 babel 插件,支持编译 @babel/env 包含的 ES 新语法。默认会转换所有的新语法,但是如果你的包有特定的运行环境,可以通过在 package.json 中指定:

  • browserslist 可以指定目标浏览器(值的格式请参考 browserslist-compatible query)。
  • engines.node 可以指定 nodejs 版本。

示例:

{
  "browserslist": "> 0.25%, not dead",
  "engines": {
    "node": ">= 0.12.0"
  }
}

Polyfill

编译不会打包任何 polyfill(除了 regenerator),以减少包的大小。可以通过在 package.json 指定 regeneratorRuntime: true | false 来决定编译是否会把 regenerator 的 polyfill 打入目标文件。如果不指定 regeneratorRuntime 字段,默认是不打入。

npm test

此命令封装了 Jest,如何编写测试用例请参考 Jest 官方网站

文档

配置

运行环境

支持 Node8.10.0 及以上版本。

About

setup js library by running one command

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published