開始今天的主題前,我們先補充一下 有關intro和outro的打包配置
今天我們就接著下去介紹rollup的常用外掛
rollup.js預設不支援CommonJS模組,我們需要藉助commonjs外掛來解決這個問題。
下載方式npm install @rollup/plugin-commonjs --save-dev
import {resolve} from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
export default {
input: './src/plugin/main-cjs.js',
output: [{
file: './dist/index-plugin-cjs.js',
format: 'cjs'
}, {
file: './dist/index-plugin-es.js',
format: 'es'
}],
plugins: [
resolve(),
commonjs()
]
}
雖然rollup本身就會對代碼做一個基本的轉譯,但是有一些機制,像是箭頭函式 或 promise 必需要BABEL才能轉譯的。
下載方式npm i -D @rollup/plugin-babel
import {resolve} from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import babel from '@rollup/plugin-babel'
export default {
input: './src/plugin/main-es.js',
output: [{
file: './dist/index-plugin-cjs.js',
format: 'cjs'
}, {
file: './dist/index-plugin-es.js',
format: 'es'
}],
plugins: [
resolve(),
commonjs(),
babel()
]
}
支援json模組
下載方式npm i -D @rollup/plugin-json
import json from '@rollup/plugin-json'
export default {
input: './src/plugin/main-json.js',
output: [{
file: './dist/index-plugin-cjs.js',
format: 'cjs'
}, {
file: './dist/index-plugin-es.js',
format: 'es'
}],
plugins: [
resolve(),
commonjs(),
babel(),
json()
]
}
程式碼壓縮(不支援ES模組)所以可用terser取代
下載方式npm i -D rollup-plugin-uglify
其他工具:
使用typescript的朋友可以引入此外掛
使用此外掛要先安裝tslib
typescript
,安裝方式npm install tslib typescript --save-dev
下載方式npm i -D npm install @rollup/plugin-typescript --save-dev
配置方式
import typescript from "rollup-plugin-typescript";
import sourceMaps from "rollup-plugin-sourcemaps";
export default {
input: "./src/main.ts",
plugins: [
typescript({
exclude: "node_modules/**",
typescript: require("typescript")
}),
sourceMaps()
],
output: [
{
format: "cjs",
file: "lib/bundle.cjs.js",
sourcemap: true
},
{
format: "es",
file: "lib/bundle.esm.js",
sourcemap: true
}
]
};
下載方式:npm install rollup-plugin-eslint --save-dev
npm install rollup-plugin-serve --save-dev
plugins: [
...baseConfig.plugins,
serve({
port: 8080,
contentBase: ['']
})
]
今天把所有常見的rollup外掛介紹完了,明天會開始時做我們的第一個Javascript開源庫。