生产模式
就是项目正式上线的模式,前端代码生产模式
主要有以下几点要素:
因此,rollup.js 的在生产模式
下编译后的代码要有以下几点要求:
npm run build
启动执行 生产模式
npm run dev
启动执行 开发模式
demo例子
https://github.com/chenshenhai/rollupjs-note/blob/master/demo/chapter-01-04/
npm inpm run build
.├── build # 编译脚本目录│ ├── rollup.config.dev.js # 开发模式配置│ ├── rollup.config.js # 基本 rollup.js编译配置│ └── rollup.config.prod.js # 生产模式配置├── dist│ ├── index.js│ └── index.js.map├── example│ └── index.html├── package.json└── src├── index.js└── lib└── demo.js
安装对应编译的npm模块
## 安装 rollup.js 基础模块npm i --save-dev rollup## 安装 rollup.js 编译ES6+的 babel 模块npm i --save-dev @rollup/plugin-babel @babel/core @babel/preset-env## 安装 rollup.js 编译本地开发服务插件npm i --save-dev rollup-plugin-serve## 安装 rollup.js 编译代码混淆插件npm i --save-dev rollup-plugin-uglify## 安装 rollup-plugin-delete 删除指定目录npm i --save-dev rollup-plugin-delete
./build/rollup.config.js
const path = require('path');const { babel } = require('@rollup/plugin-babel');const del = require('rollup-plugin-delete');const resolveFile = function(filePath) {return path.join(__dirname, '..', filePath)}module.exports = {input: resolveFile('src/index.js'),output: {file: resolveFile('dist/index.js'),format: 'umd',sourcemap: true,},plugins: [del({ targets: 'dist/*' }),babel({presets: ['@babel/preset-env']}),],}
开发模式
配置基本 ./build/rollup.config.dev.js
const path = require('path');const serve = require('rollup-plugin-serve');const config = require('./rollup.config');const resolveFile = function(filePath) {return path.join(__dirname, '..', filePath)}const PORT = 3001;config.output.sourcemap = true;config.plugins = [...config.plugins,...[serve({port: PORT,// contentBase: [resolveFile('')]contentBase: [resolveFile('example'), resolveFile('dist')]})]]module.exports = config;
生产模式
配置基本 ./build/rollup.config.prod.js
const { uglify } = require('rollup-plugin-uglify');const config = require('./rollup.config');config.output.sourcemap = false;config.plugins = [...config.plugins,...[uglify()]]module.exports = config;
./package.json
配置编译执行脚本{"scripts": {"dev": "node_modules/.bin/rollup -w -c ./build/rollup.config.dev.js","build": "node_modules/.bin/rollup -c ./build/rollup.config.prod.js"},}
./src/index.js
和./src/lib/demo.js
./src/index.js
源码内容import demo from './lib/demo';const arr1 = [1,2,3];const arr2 = [4,5,6];console.log([...arr1, ...arr2]);async function initDemo () {let data = await demo();console.log(data);}initDemo();
./src/lib/demo.js
源码内容function demo() {return new Promise((resolve, reject) => {try {setTimeout(()=>{const obj1 = {a:1};const obj2 = {b:2};const result = {...obj1, ...obj2};resolve(result);}, 1000)} catch (err) {reject(err);}})}export default demo;
开发模式
npm run dev
生产模式
npm run build
./dist/
下./dist/index.js
生产模式
ES5代码的生成会被uglify
混淆压缩开发模式
会生成源码的sourceMap 文件 ./dist/index.js.map
3001
端口./example/index.html
<html><head><meta charset="utf-8" /><script src="https://cdn.bootcss.com/babel-polyfill/6.26.0/polyfill.js"></script></head><body><p>打开控制台看 console.log 数据 </p><script src="./index.js"></script></body></html>
[1, 2, 3, 4, 5, 6]{a: 1, b: 2, c: 3, d: 4}>
本篇主要讲述是,rollup.js,下一篇是 rollup.js的生产模式
,也就是发布上线时候的开发配置。在本章的前四篇(包括本篇),都在讲述使用bin/rollup
指令去编译代码,下一篇将会讲述用rollup.js
的API在Node.js代码中执行编译代码。