汪图南
  • RAG

    • RAG
  • 快速入门
  • 高级技巧
前端面试之道
  • 打包工具

    • Webpack
    • Rollup
  • TypeScript

    • TypeScript基础
    • TypeScript类型挑战
  • CSS预编译器

    • SASS
  • 自动化测试

    • Vue应用测试
  • Vue2.0源码分析
  • Vue3.0源码分析
  • 数据结构和算法(基础)
  • LeetCode(刷题)
  • JavaScript书籍

    • 你不知道的JavaScript(上)
    • 你不知道的JavaScript(中下)
    • JavaScript数据结构和算法
    • JavaScript设计模式与开发实践
    • 深入理解ES6
  • Git书籍

    • 精通Git
Github
  • RAG

    • RAG
  • 快速入门
  • 高级技巧
前端面试之道
  • 打包工具

    • Webpack
    • Rollup
  • TypeScript

    • TypeScript基础
    • TypeScript类型挑战
  • CSS预编译器

    • SASS
  • 自动化测试

    • Vue应用测试
  • Vue2.0源码分析
  • Vue3.0源码分析
  • 数据结构和算法(基础)
  • LeetCode(刷题)
  • JavaScript书籍

    • 你不知道的JavaScript(上)
    • 你不知道的JavaScript(中下)
    • JavaScript数据结构和算法
    • JavaScript设计模式与开发实践
    • 深入理解ES6
  • Git书籍

    • 精通Git
Github
  • Rollup基础

    • Rollup介绍
    • 核心概念
    • 基础配置
    • 配置项类型提示
    • 配置package.json
    • 常用插件
  • Rollup配置案例

    • Babel转义
    • 支持TypeScript
    • 环境区分
    • Eslint
    • 支持Jest自动化测试
    • 提交规范
    • Changelog

环境区分

在Rollup中,区分开发环境和生产环境配置十分简单,其中一个方法是可以使用不同的配置文件进行区分即可。

对于配置文件,我们做如下规定:

  • rollup.base.config.mjs: 公共配置。
  • rollup.dev.config.mjs: 开发环境配置。
  • rollup.prod.config.mjs: 生产环境配置。

在根目录下新建build文件夹,然后分别新建以上三个文件:

|-- build
|   |-- rollup.base.config.mjs
|   |-- rollup.dev.config.mjs
|   |-- rollup.prod.config.mjs

rollup.base.config.mjs完整代码如下:

import commonjs from '@rollup/plugin-commonjs'
import nodeResolve from '@rollup/plugin-node-resolve'
import babel from '@rollup/plugin-babel'
import typescript from '@rollup/plugin-typescript'

export default {
  input: 'src/index.ts',
  plugins: [
    commonjs(),
    nodeResolve(),
    typescript(),
    babel({
      babelHelpers: 'bundled'
    })
  ]
}

rollup.dev.config.mjs完整代码如下:

import baseConfig from './rollup.base.config'

const devConfig = {
  ...baseConfig,
  output: [
    { file: 'dist/vue.cjs.js', format: 'cjs' },
    { file: 'dist/vue.esm.js', format: 'es' },
    { file: 'dist/vue.js', format: 'umd', name: 'Vue' }
  ]
}
export default devConfig

prod环境下,区分与开发环境,我们需要对代码进行代码。需要安装Rollup压缩代码的相关npm包:

# 安装rollup相关包
$ npm install @rollup/plugin-terser -D

rollup.prod.config.mjs完整代码如下:

import terser from '@rollup/plugin-terser'
import baseConfig from './rollup.base.config.mjs'

/**
 * @type { import('rollup').RollupOptions }
 */
export default {
  ...baseConfig,
  output: [
    { file: 'dist/vue.cjs.min.js', format: 'cjs' },
    { file: 'dist/vue.esm.min.js', format: 'es' },
    { file: 'dist/vue.min.js', format: 'umd', name: 'Vue' }
  ],
  plugins: [
    ...baseConfig.plugins,
    terser()
  ]
}

接着,我们需要在package.json文件中修改打包命令:

"scripts": {
  "dev": "rollup -w -c ./build/rollup.dev.config.mjs",
  "build": "rollup -c ./build/rollup.prod.config.mjs"
}

最后,我们尝试使用npm run build命令打包生产环境代码,执行后会在dist目录下生成三个.min.js文件且代码是经过压缩的。

|-- dist
|   |-- vue.cjs.min.js
|   |-- vue.esm.min.js
|   |-- vue.min.js
最后更新时间: 2025/5/6 15:36
贡献者: wangtunan
Prev
支持TypeScript
Next
Eslint