// rollup.config.js
import vue from 'rollup-plugin-vue'
import babel from 'rollup-plugin-babel' // rollup 的 babel 插件,ES6转ES5
import commonjs from 'rollup-plugin-commonjs' // 将非ES6语法的包转为ES6可用,添加导出语法,以支持import require
import { terser } from 'rollup-plugin-terser' //代码压缩,取代uglify,支持ES模块
import minimist from 'minimist'
import nodeResolve from 'rollup-plugin-node-resolve' // 帮助寻找node_modules里的包,并引入进来
// import replace from 'rollup-plugin-replace' // 替换待打包文件里的一些变量,如 process在浏览器端是不存在的,需要被替换
// import uglify from 'rollup-plugin-uglify' // 压缩包 ,es6用rollup-plugin-uglify-es ,被rollup-plugin-terser替代
// rollup-plugin-alias插件:替换模块路径中的别名;
const env = process.env.NODE_ENV
const argv = minimist(process.argv.slice(2)) // 抽出形参和实参,变成对象
const config = {
input: `${argv.fileDir}/${argv.uploadComponentName}/index.js`,
// external: ['react', 'redux'], // 告诉rollup,不打包react,redux;将其视为外部依赖
output: {
name: argv.uploadComponentName, // 打包后的全局变量,如浏览器端 window.ReactRedux
// globals: {
// react: 'React', // 这跟external 是配套使用的,指明global.React即是外部依赖react
// redux: 'Redux'
// },
// exports: 'named',
extend: true
},
plugins: [
commonjs(),
vue({
css: true,
compileTemplate: true,
style: {
postcssPlugins: [require('autoprefixer')]
}
}),
// replace({
// 'process.env.NODE_ENV': JSON.stringify(env)
// })
]
}
// 指定为rely,则把依赖包打进来
if(argv.rely){
config.plugins.push(nodeResolve())
}
// 指定为es6时,则不转换成es5
if (!argv.es6) {
config.plugins.push(babel({
runtimeHelpers: true,
extensions: ['.js', '.jsx', '.es6', '.es', '.mjs', '.vue'],
exclude: 'node_modules/**'
}))
}
// Only minify browser (iife) version
if (argv.format === 'iife') {
config.plugins.push(terser())
}
export default config
网友评论