rollup 发布到 npm

176 阅读2分钟
  • 创建 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 文件的格式改变;

  1. format: 'umd' 文件输出格式是 umd;

7.出现报错 EPERM:operation not permitted,unlink,解决方法:关掉所有打开的端口,重新 yarn 。不行的话,就 yarn cache clean 清下缓存,再yarn image.png

8.如下报错,方法:package.json:rollup-plugin-esbuild 版本改为 2.5.0 image.png

  • 运行 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 image.png

  • 登录 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;

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