Skip to content
索引

rollup

rollup是下一代JavaScript模块打包工具。开发者可以在你的应用或库中使用ES2015模块,然后高效地将它们打包成一个单一文件用于浏览器和node.js使用

相比其他JavaScript打包工具,rollup总能打出更小,更快的包

这时因为rollup基于ES2015模块,比webpack和browserify使用的commonJS模块机制更高效。这也让rollup从模块中删除无用的代码,即tree-shaking变得更容易

Tree-shaking

这个特点,是Rollup最初推出时的一大特点。Rollup通过对代码的静态分析,分析出冗余代码,在最终的打包文件中将这些冗余代码删除掉,进一步缩小代码体积。这是目前大部分构建工具所不具备的特点(Webpack 2.0+已经支持了,但是有开发者认为并没有Rollup做得干净)

ES2015模块打包支持

这个也是其他构建工具所不具备的。Rollup不需要通过babel将import转化成Commonjs的require方式,极大地利用ES2015模块的优势

安装

全局安装更易使用

sh
npm i -g rollup
npm i -g rollup

使用

新建src文件夹,其下新建index.js,执行打包命令

sh
rollup -i src/index.js -o dist/bundle.js -f es
rollup -i src/index.js -o dist/bundle.js -f es
  • -i指定打包的入口文件,-i是--input的缩写

  • src/index.js是-i的参数,即被指定的打包的入口文件

  • -o指定输出的文件,是--output.file或--file的缩写(如果没有这个参数,则直接输出到控制台)

  • dist/bundle.js是-o的参数,即输出文件

  • -f指定打包文件的格式,-f是--format的缩写

  • es是-f的参数,表示打包文件使用ES6模块规范

打包格式

rollup支持的打包文件的格式有

  • amd

  • cjs

  • es\esm,

  • iife, umd

amd为AMD标准,cjs为CommonJS标准,esm\es为ES模块标准,iife为立即调用函数, umd同时支持amd、cjs和iife

rollup.config.js

rollup配置文件,项目根目录下创建

js
export default {
  input: "./src/index.js", // 入口文件路径
  output: [ // 输出文件名及文件格式
    {
      file: './dist/my-lib-umd.js',
      format: 'umd',  //当入口文件有export时,'umd'格式必须指定name
      name: 'myLib'  //这样,在通过<script>标签引入时,才能通过name访问到export的内容
    },
    {
      file: './dist/my-lib-es.js',
      format: 'es'
    },
    {
      file: './dist/my-lib-cjs.js',
      format: 'cjs' // CJS是CommonJS的缩写
    }
  ]
}
export default {
  input: "./src/index.js", // 入口文件路径
  output: [ // 输出文件名及文件格式
    {
      file: './dist/my-lib-umd.js',
      format: 'umd',  //当入口文件有export时,'umd'格式必须指定name
      name: 'myLib'  //这样,在通过<script>标签引入时,才能通过name访问到export的内容
    },
    {
      file: './dist/my-lib-es.js',
      format: 'es'
    },
    {
      file: './dist/my-lib-cjs.js',
      format: 'cjs' // CJS是CommonJS的缩写
    }
  ]
}

修改script字段

生成默认package.json

sh
npm init -y 
npm init -y 

package.json添加以下内容

js
"scripts": { 
    "dev1": "rollup -c"                
    "dev2": "rollup -c my.config.js"  
    "dev3": "rollup -wc" 
}
"scripts": { 
    "dev1": "rollup -c"                
    "dev2": "rollup -c my.config.js"  
    "dev3": "rollup -wc" 
}
  • scripts表示node脚本
  • -c表示执行编译, 默认使用rollup.config.js
  • -c后面接js文件,表示使用自定义的配置文件,my.config.js
  • c参数表示执行编译,w参数表示监听文件状态,即在文件修改后自动重新编译
sh
#执行脚本
npm run dev1
npm run dev2
npm run dev3
#执行脚本
npm run dev1
npm run dev2
npm run dev3

Released under the MIT License.