踩坑
- eslint安装,需要node 10以上
- 注意rollup plugins的顺序,看eslint要使用在打包前还是后
- 本地调试包时,若包内容有修改,不需要重连,如果修改不起作用,可以尝试先断开连接,重新link
- package.json
- rollup配置
- eslint
- babel
- jest
- 本地测试
创建项目
1 | ├── bin // 用于存放可执行二进制文件的目录 |
rollup配置
通用配置
- @rollup/plugin-json
- rollup-plugin-clear
- @rollup/plugin-alias
- @rollup/plugin-node-resolve
- @rollup/plugin-commonjs
- rollup-plugin-typescript2
- @rollup/plugin-eslint
- @rollup/plugin-babel
1 | // scripts/rollup.config.base.js |
开发环境配置
- rollup-plugin-serve
- rollup-plugin-livereload
1 | // scripts/rollup.config.dev.js |
正式环境配置
- rollup-plugin-obfuscator
- rollup-plugin-filesize
1 | // scripts/rollup.config.prod.js |
eslint
使用@typescript-eslint/parser解析器
执行eslint时报错
1 | TypeError: Failed to load plugin 'vue' declared in '.eslintrc.js' : createRequire is not a function |
应注意node版本,升级到12即可
jest
使用ts进行编写1
npm i -D jest @types-jest ts-jest
注意:由于业务中有涉及TextEncoder、TextDecoder,jest使用jsdom,但其没有包含这两个类,因此需要自己在自定义环境中注入。
1 | // custom-test-env.js |
1 | // package.json |
本地测试
在包的根目录执行,将包发布到本地全局
1 | $ npm link |
在另一个可运行的项目中执行
1 | // name 为包的名字,即package.json中的name |
引入使用即可
1 | // name 为包的名字,即package.json中的name |