rollup.js配置环境变量

场景: 由于项目是通过svelte.js + rollup.js框架搭建起来的, 并没有使用到cli脚手架, 没有办法配置不同环境的变量

一. 使用cross-env添加环境变量

  1. 安装cross-env,它可根据不同的系统设置环境变量

npm install cross-env --save-dev
  1. 在 package.json 中:

"scripts": {
    "build": "cross-env NODE_ENV=staging rollup -c",
    "build:prod": "cross-env NODE_ENV=prod rollup -c",
    "build:qa": "cross-env NODE_ENV=qa rollup -c",
    "build:test": "cross-env NODE_ENV=test rollup -c",
    "build:stage": "cross-env NODE_ENV=staging rollup -c",
    "build:op": "cross-env NODE_ENV=op rollup -c",
    "dev:op": "cross-env NODE_ENV=op rollup -c -w",
    "dev": "cross-env NODE_ENV=development rollup -c -w",
    "start": "sirv public --no-clear -p 9527"
  },
  1. 在根目录下新建.env.xx文件, 对应每一个环境

  1. 在不同的环境中配置不同的域名

二. 使用rollup-plugin-generate-html-template生成不同环境的html

  1. 安装 :

npm install --save-dev rollup-plugin-generate-html-template
  1. 在rollup.config.js加载.env配置

import { config } from 'dotenv'
// 获取文件里面的内容
let envConfig = config({ path: "./.env."+ process.env.NODE_ENV }).parsed;
  1. 配置rollup-plugin-generate-html-template

//rollup.config.js
import htmlTemplate from 'rollup-plugin-generate-html-template';
import replace from '@rollup/plugin-replace'
import { config } from 'dotenv'
// 获取文件里面的内容
let envConfig = config({ path: "./.env."+ process.env.NODE_ENV }).parsed;
// 替换的文件名
const filename = process.env.NODE_ENV!=='staging' ? '.'+process.env.NODE_ENV : ''
...
plugins: [
    // 该方法可以存放变量
    replace({
      preventAssignment: true,
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    }),
    // 生成对应的index.html对应的入口文件
    htmlTemplate({
      template: 'public/template.html',
      target: 'public/index'+filename+'.html',
      replaceVars: envConfig,
      attrs: ['src="/build/bundle.js"', 'defer']
    }),
]

更多配置项参考https://github.com/bengsfort/rollup-plugin-generate-html-template

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值