使用DefinePlugin通过NODE_ENV配置环境变量

使用DefinePlugin可以在编译阶段根据NODE_ENV自动配置环境变量,提升前端开发效率。

DefinePlugin的用法:

每个传进 DefinePlugin 的键值都是一个标志符或者多个用 . 连接起来的标志符,它可以配置多个环境变量。

  • 如果这个值是一个字符串,它会被当作一个代码片段来使用。
  • 如果这个值不是字符串,它会被转化为字符串(包括函数)。
  • 如果这个值是一个对象,它所有的 key 会被同样的方式定义。
  • 如果在一个 key 前面加了 typeof,它会被定义为 typeof 调用。

这些值会被内联进那些允许传一个代码压缩参数的代码中,从而减少冗余的条件判断。

new webpack.DefinePlugin({
  PRODUCTION: JSON.stringify(true),
  VERSION: JSON.stringify("5fa3b9"),
  BROWSER_SUPPORTS_HTML5: true,
  TWO: "1+1",
  "typeof window": JSON.stringify("object")
})

注意,因为这个插件直接执行文本替换,给定的值必须包含字符串本身内的实际引号。通常,有两种方式来达到这个效果,使用 ' "production" ' , 或者使用 JSON.stringify("production")

如何使用DefinePlugin:

1、在package.json文件里,设置NODE_ENV的值


  "scripts": {
    "build-dev": "cross-env NODE_ENV=development webpack --display-chunks --progress --colors --profile --bail",
    "build-test": "cross-env NODE_ENV=test webpack -p --display-chunks --progress --colors --profile --bail",
    "build-pro": "cross-env NODE_ENV=production webpack -p --display-chunks --progress --colors --profile --bail",
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open"
  }

2、新建processENV.js文件,配置每个环境下各自需要的环境变量

const NODE_ENV = process.env.NODE_ENV;
const config = {
  development: {
    API_CONFIG: "development"
  },
  production: {
    API_CONFIG: "production"
  },
  test: {
    API_CONFIG: "test"
  }
};
module.exports = config[NODE_ENV];

3、在webpack的构建文件里使用webpack.DefinePlugin:

const webpack = require("webpack");
const processENV = require("./processENV");
module.exports = {
  entry: {...},
  resolve: {
    ...
  },
  module: {
    rules: [
      ...
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      processENV: JSON.stringify(processENV)
    })
  ]
};

4、在src文件里的所有文件都可以访问processENV

<template>
  <div>
    
  </div>
</template>
<script>
//src下的所有文件都可以直接访问processENV变量
export default {
  props: ['columns'],
  data() {
    return {
      testData:processENV
    };
  },
  methods: {
    test() {
       console.log(processENV)
    }
  }
};
</script>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
"DefinePlugin Conflicting values for 'process.env.NODE_ENV'" 这个警告信息通常出现在使用webpack构建项目时。它意味着在配置文件中对'process.env.NODE_ENV'变量进行了多次定义,导致了冲突。 解决这个问题的一种方法是使用webpack的DefinePlugin插件来添加变量,并在配置文件中只定义一次'process.env.NODE_ENV'变量使用这个插件,你可以在webpack配置文件中定义环境和变量,然后将其传递给应用程序。例如,在配置文件中添加如下代码: new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify("production") } }) 这样,你只需要定义一次'process.env.NODE_ENV'变量,并将其设置为所需的值,避免了冲突。请确保在配置文件中只有一处对'process.env.NODE_ENV'变量的定义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue 打包异常记录](https://blog.csdn.net/u014685642/article/details/124406835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [webpack配置报错WARNING in DefinePlugin Conflicting values for ‘process.env.NODE_ENV](https://blog.csdn.net/weixin_42349568/article/details/124229170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值