Rollup 是一个 JavaScript 模块打包器,它专门用于创建基于 ES6 模块的库和应用程序。与其他打包器相比,它的主要优点在于能够生成更小、更快的代码。
本文将介绍如何使用 npm 包 Rollup 进行 JavaScript 应用程序和库的打包,并提供详细的示例代码和指导意义。
安装
首先,你需要安装 Node.js 和 npm,然后可以运行以下命令来安装 Rollup:
npm install rollup --save-dev
配置文件
Rollup 使用配置文件来指定输入文件、输出文件以及其他选项。创建一个名为 rollup.config.js
的文件,并添加以下内容:
export default { input: 'src/index.js', output: { file: 'dist/bundle.js', format: 'umd', name: 'MyLibrary' } };
这个配置文件告诉 Rollup 使用 src/index.js
作为入口点,并将打包后的代码输出到 dist/bundle.js
文件中。我们还指定了输出格式为 UMD,并指定了库的名称为 MyLibrary
。
插件
Rollup 具有丰富的插件生态系统,你可以使用这些插件来处理各种任务,例如压缩代码、转换 TypeScript 等等。以下是一些常用的插件:
@rollup/plugin-commonjs
该插件使 Rollup 能够识别和打包 CommonJS 模块。安装方式:
npm install @rollup/plugin-commonjs --save-dev
添加到 rollup.config.js
文件的 plugins
属性中:
-- -------------------- ---- ------- ------ -------- ---- -------------------------- ------ ------- - ------ --------------- ------- - ----- ----------------- ------- ------ ----- ----------- -- -------- - ---------- - --
@rollup/plugin-node-resolve
该插件使 Rollup 能够从 node_modules
目录中导入第三方模块。安装方式:
npm install @rollup/plugin-node-resolve --save-dev
添加到 rollup.config.js
文件的 plugins
属性中:
-- -------------------- ---- ------- ------ ------- ---- ------------------------------ ------ ------- - ------ --------------- ------- - ----- ----------------- ------- ------ ----- ----------- -- -------- - --------- - --
rollup-plugin-terser
该插件用于压缩代码。安装方式:
npm install rollup-plugin-terser --save-dev
添加到 rollup.config.js
文件的 plugins
属性中:
-- -------------------- ---- ------- ------ - ------ - ---- ----------------------- ------ ------- - ------ --------------- ------- - ----- --------------------- ------- ------ ----- ----------- -- -------- - -------- - --
示例代码
下面是一个使用 Rollup 打包的基本示例。假设你正在创建一个名为 MyLibrary
的 JavaScript 库,其中包含一个名为 add
的函数:
// src/index.js export function add(a, b) { return a + b; }
运行以下命令进行打包:
rollup -c rollup.config.js
生成的 dist/bundle.js
文件内容如下:
-- -------------------- ---- ------- --------- -------- -------- - ------ ------- --- -------- -- ------ ------ --- ----------- - ---------------- - ------ ------ --- ---------- -- ---------- - ------------------- -------- - ------- - ------ ---------- --- ----------- - ---------- - ------ -- ----- ------------------------ - ----- ------- --------- --------- - ---- -------- -------- ------ -- - ------ - - -- - ----------- - ---- --------------------- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------