# webpack学习笔记之十三 - cross-env 使用

2022-02-27  本文已影响0人  人话博客
// 在 package.json 中
{
    "scripts:" : {
        "setFccc": "cross-env fccc=123"
        "setHaha" : "cross-env haha=zhnas"
    }
}
// 上述两句配置等价于在 js 模块中
    
process.env.fccc = '123'
process.env.haha = 'zhnas'

很多前端打包工具的的条件编译都是利用 process.env.xxxx 来进行的.


cress-env.png

一个简单的 DEMO.

通过 process.env.locale 的值,来动态的指定 index.htmltitle 属性值

// package.json 安装依赖
"devDependencies": {
    "clean-webpack-plugin": "^4.0.0",
    "cross-env": "^7.0.3",
    "html-webpack-plugin": "^3.2.0",
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.10.3"
  }
// package.json scripts 脚本配置
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config webpack.config.js",
    "en":"cross-env locale=en webpack --config webpack.config.js",
    "zh":"cross-env locale=zh webpack --config webpack.config.js"
  },
// webpack.config.js 配置代码
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')


// 根据指定的 process.env.locale 来动态的设定 index.html 的 title 模板值.
const getIndexTitleWithLocale = () => {

  switch (process.env.locale) {
    case "en":
      return "this is english site!"
    case "zh":
      return "这是中文网站!"
    default:
      return "你并未设置 process.env.locale 属性"
  }
}

module.exports = {
  entry: path.resolve(__dirname, './src/index.js'),
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, './dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      // 动态指定模板 title,不能使用 template 属性
      // template: path.resolve(__dirname),
      title: getIndexTitleWithLocale()
    }),
    new CleanWebpackPlugin()
  ]
}

效果:

cross-env-demo.gif

码云地址

上一篇下一篇

猜你喜欢

热点阅读