Rollup
config
// rollup.config.js
const commonjs = require('@rollup/plugin-commonjs');
const nodeResolve = require('@rollup/plugin-node-resolve');
module.exports = {
input: './src/index.js', // 入口
// 数组 可以打包多个格式
output: [
{
format: 'cjs', // 打包格式
name: 'liu', // name, 立即执行函数 打包完 最后给挂在到 window 上
file: './dist/liu.cjs.js', // 出口
globals: {
lodash: '_', // 告诉 库对应的在项目中使用的变量
},
},
{
format: 'iife',
name: 'liu',
file: './dist/liu.iife.js',
},
{
format: 'es',
name: 'liu', // name
file: './dist/liu.es.js',
},
],
// 排除哪些库打包。 和output 的 globals 对应
external: ['lodash'],
plugins: [commonjs(), nodeResolve()],
};
插件
-
@rollup/plugin-node-resolve 打包第三方库 node_modules 下的 。
-
babel
// rollup.config.js // 依赖 @babel/core @babel/preset-env const babel = require('@rollup/plugin-babel'); module.exports={ plugins: [babel(),terser()], } // bable.config.js module.exports = { presets: ['@bable/preset-env'], };
-
rollup-plugin-terser -- js代码压缩--- 直接使用
-
处理css rollup-plugin-postcss
// rollup.config.js // 处理css const postcss = require('rollup-plugin-postcss'); const autoprefixer = require('autoprefixer'); // 给css添加前缀 module.exports = { plugins: [ postcss({ plugins: [autoprefixer()], }) ], }
-
typescript 支持ts ts.config.ts自己设置
const typescript = require("@rollup/plugin-typescript"); typescript({ outDir: "es", declaration: true, // 导出声明文件 declarationDir: "es", }),
-
rollup-plugin-replace 配置环境变量
// 注入环境变量 const replaceENV = require('rollup-plugin-replace'); replaceENV({ 'process.env.NODE_ENV': JSON.stringify('development'), });
-
rollup-plugin-vue 打包 vue
const vue = require('rollup-plugin-vue') vue({ // 处理 <style> css: true, // 把 template 转成 function compileTemplate: true })
-
serve 开启一个服务
const serve = require('rollup-plugin-serve'); serve({ open: true, // 打开浏览器 port: '8888', // 服务的文件夹 contentBase: '.', }),
打包格式
- cjs commonjs
- iife 立即执行函数
- amd amd 格式
- es es6 格式
打包
命令行
// -f 是打包成什么格式的。 -o 输出到文件下
npx rollup ./src/index.js -f cjs -o dist/bundle.js
// 有配置文件
npx rollup -c
设置模块入口
// package.json
{
"main": "dist/cjs/index.js", // 打包后的文件
"module": "dist/es/index.js",
"types": "es/index.d.ts",
}
自定义插件
……