- 创建 lib/index.ts 文件,导出需要导出的东西
export {default as Switch} from './Switch.vue'
export {default as Button} from './Button.vue'
- 根目录下,创建 rollup.config.js 文件,告诉 rollup 怎么打包:input 是输入文件,output 是输出文件,global 指用到了全局变量或外部变量 vue,不需要打包,file 是生成的文件,自动创建 CSS 文件,所以不用写,format 是文件输出格式,esbuild 会对所有的 js/ts 文件编译成 IE 支持的 JS ,目标是 ES 2015(ES6),ES6 以下不支持。
import esbuild from 'rollup-plugin-esbuild'
import vue from 'rollup-plugin-vue'
import scss from 'rollup-plugin-scss'
import dartSass from 'sass';
import { terser } from "rollup-plugin-terser"
export default {
input: 'src/lib/index.ts',
output: {
globals: {
vue: 'Vue'
},
name: 'Pixiu',
file: 'dist/lib/pixiu.js',
format: 'umd',
plugins: [terser()]
},
plugins: [
scss({ include: /.scss$/, sass: dartSass }),
esbuild({
include: /.[jt]s$/,
minify: process.env.NODE_ENV === 'production',
target: 'es2015'
}),
vue({
include: /.vue$/,
})
],
}
- 安装包
yarn add --dev rollup-plugin-esbuild rollup-plugin-vue rollup-plugin-scss sass rollup-plugin-terser
yarn global add rollup
//在 package.json 中添加以下代码,禁止 npm 下载 node-sass,这样下载 rollup 的速度会快一点。
"resolutions": {
"node-sass": "npm:sass@^1.26.11"
},
1.rollup-plugin-esbuild 将 typescript 变成 js;
2.rollup-plugin-vue 将 .vue 文件变成 js;
3.rollup-plugin-scss 将 .scss 文件变成 js;
4.sass 支持 上面 3 的插件;
5.rollup-plugin-terser 将 js 文件的格式改变;
- format: 'umd' 文件输出格式是 umd;
7.出现报错 EPERM:operation not permitted,unlink,解决方法:关掉所有打开的端口,重新 yarn 。不行的话,就 yarn cache clean 清下缓存,再yarn
8.如下报错,方法:package.json:rollup-plugin-esbuild 版本改为 2.5.0
- 运行
rollup -c,看 dist/lib/
发布 dist/lib 目录
上传到 npm 的服务器:
- 打开 package.json 文件,添加要上传的所有文件,main 表示主文件,package.json 中只能有一个 files 和 main :
"files": [
"dist/lib/*"
],
"main": "dist/lib/pixiu.js",
- npm publish
确保没有使用淘宝源,请使用官方源:
npm config get registry
//查看源,npmjs.org 结尾的域名就是官方源,npm.taobao.js 就是淘宝源
npm config set registry http://registry.npmjs.org/
//设置为官方源
npm publish //将files 对应的文件上传到 npm
报错:you should bug the author to publish it.
解决:登录 npm
-
登录 npm
npm login -
发布完之后 切换回淘宝源
npm config set registry https://registry.npm.taobao.org/
注意事项
- name
1、package 的 name 必须是小写字母,可用 _ 或 - 连接;
2、package 的 name 不能跟 npm 上现有的 name 重名;
- version
1、每次 publish 的版本不能和之前的相同;
2、从第二次开始,必须先改 version 再 publish;
- 注册 npmjs.com 账号
1、在 npm 官网上注册,然后在命令行使用
npm login登录;
2、登录之后才能 npm publish;
3、使用 npm logout可以退出登录。
nrm 快速切换源
安装命令
npm i -g nrm --registry https://registry.npm.taobao.org
查看所有源
nrm ls
切到淘宝源
nrm use taobao
切到 npm 官方源
nrm use npm