webpack进阶--01--环境变量的设置

2023-11-08

环境变量的设置

在用webpack作为打包工具的项目中,环境变量共有三种:

  1. node运行时的环境变量
  2. webpack配置对象的环境变量
  3. js运行时的环境变量

node运行时的环境变量

node环境中,通过process.env可以获取node的全局环境信息

windows系统中,可以通过执行以下命令设置:

set NODE_ENV=dev

linux系统中,可以通过执行以下命令设置:

export NODE_ENV=dev

所以,我们可以在项目的package.json中设置:

"scripts": {
  "start-win": "set NODE_ENV=dev && node app.js",
  "start-unix": "export NODE_ENV=dev && node app.js",
 }

但这样肯定不是我们想要的,能不能统一一条命令?

方法是安装cross-env

npm i -D cross-env

再在package.json中设置

"scripts": {
  "start": "cross-env NODE_ENV=dev && node app.js",
 }

这时就可以在所有系统中使用同一命令了。

执行命令之后,就可以在node代码中获取了

console.log(process.env.NODE_ENV) // dev

NODE_ENV只是笔者随意设置的环境变量名称,你也可以随意设置环境变量名称

webpack配置对象的环境变量

webpack配置对象的环境变量是通过webpack命令行来设置的。

webpack4开始,webpackwebpack的命令行抽离成一个单独的npm包:webpack-cli,所以,如果要使用webpack命令行传参需要先安装webpack-cli

npm i -D webpack-cli

通过webpack命令行传参的方式,webpack配置对象必须通过函数的方式导出。

命令行

webpack --env.NODE_ENV=local --env.production --progress

如果设置 env 变量,却没有赋值,--env.production 默认将 --env.production 设置为 true*。还有其他可以使用的语法。

webpack.config.js

module.exports = env => {
  // Use env.<YOUR VARIABLE> here:
  console.log('NODE_ENV: ', env.NODE_ENV) // 'local'
  console.log('Production: ', env.production) // true

  return {
    entry: './src/index.js',
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist')
    }
  }
}

js运行时的环境变量

js本身没有环境变量一说,只是我们通过webpack打包时传入到js中并设置为js的全局变量。

方法:

使用webpack自带的插件DefinePlugin

webpack.config.js

module.exports = env => {
  return {
    entry: './src/index.js',
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist')
    },
    plugins: [
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': JSON.stringify(env.NODE_ENV)
      })
    ]
  }
}

./src/index.js

console.log(process.env.NODE_ENV) // lacal
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack进阶--01--环境变量的设置 的相关文章

随机推荐

  • Android Studio远程连接模拟器调试

    目录 需求 ADB端口说明 远程连接步骤 启动模拟器 ADB连接 端口映射 远程连接 需求 Android Studio 高版本已经可以使用 Pair Devices Using Wi fi 功能连接同一局域网下的真机设备了 低版本也可以使
  • 时序预测

    时序预测 MATLAB实现GWO LSTM灰狼算法优化长短期记忆神经网络时间序列预测 目录 时序预测 MATLAB实现GWO LSTM灰狼算法优化长短期记忆神经网络时间序列预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基
  • 从0搭建Vue3组件库(五): 如何使用Vite打包组件库

    本篇文章将介绍如何使用 vite 打包我们的组件库 同时告诉大家如何使用插件让打包后的文件自动生成声明文件 d ts 打包配置 vite 专门提供了库模式的打包方式 配置其实非常简单 首先全局安装 vite 以及 vitejs plugin
  • Java API操作HDFS文件,利用Junit单元测试

    操作HDFS文件 约有以下两种方法 1 shell 这个相信大家基本都会 2 Java API 的操作 这次主要记录下Java API操作HDFS文件的相关测试 环境 IDEA JDK10 0 1 虚拟机centos 版本 hadoop2
  • XML 和 JSON 学习笔记(基础)

    XML Why XML 的出现背景 在实际开发中 不同语言 如Java JavaScript等 的应用程序之间数据传递的格式不同 导致它们进行数据交换时很困难 XML就应运而生了 XML 是一种通用的数据交换格式 可以十分方便地实现格式交换
  • 亚稳态的消除及解决方法

    亚稳态产生 我们就要对亚稳态进行消除 常用对亚稳态消除有三种方式 1 对异步信号进行同步处理 2 采用FIFO对跨时钟域数据通信进行缓冲设计 3 对复位电路采用异步复位 同步释放方式处理 1 对异步信号进行同步处理 input sig ns
  • ConnectionString 属性尚未初始化

    ConnectionString 属性尚未初始化 的另类解决办法现在稍微熟悉Asp net的朋友都习惯把数据库连接配置写到web config中 这样的优点主要是能随时更改数据库配置 比如帐号密码 而不用再编译 web config中的数据
  • 古典概型——概率论与数理统计(宋浩)

    事件的概率 1 2 1概率的初等描述 概率的定义 事件发生的可能性的大小 P A 性质 P 1 P 0 规范性 0 lt P A lt 1 非负性 有限可加 A1 A2 A3 An互不相容 P A1 A2 A3 A4 P A1 P A2 P
  • GO面试必须得会的137个面试题

    go的调度 go struct能不能比较 因为是强类型语言 所以不同类型的结构不能作比较 但是同一类型的实例值是可以比较的 实例不可以比较 因为是指针类型 go defer for defer 先进后出 后进先出 func b for i
  • WIN10驱动程序的卸载与更新

    方法一 在设备管理器中找到对应驱动 右键选择 卸载 记得勾选删除此设备的驱动程序软件 然后点击确定 这一步删除了旧得问题驱动 重装得时候就可以根据需要自己选择如何安装驱动了 方法二 以官网下载无线网卡驱动为例 https downloadc
  • VS2012 error C2668: “sqrt”: 对重载函数的调用不明确-已解决

    源程序如下 include
  • Kubernetes RBAC 为指定用户授权访问不同命名空间权限

    在开启了 TLS 的集群中 每当与集群交互的时候少不了的是身份认证 使用 kubeconfig 即证书 和 token 两种认证方式是最简单也最通用的认证方式 以kubectl为例介绍kubeconfig的配置 kubectl只是个go编写
  • pytorch 多GPU训练

    代码库地址 mnist 目录 普通单机单卡训练流程 DDP分布式训练 horovod方式 普通单机单卡训练流程 以mnist为例 主要包括数据加载 模型构建 优化器和迭代训练等部分 import argparse import torch
  • Csharp:字符串操作

    public class StringControl
  • C++中的map

    1 简介 2 pair类型 2 1 pair类型的定义和初始化 2 2 pair对象的一些操作 3 map基本操作 3 1 头文件 3 2 创建map对象 3 3 map元素访问 3 3 1 使用下标 访问 3 3 2 使用 at 方法访问
  • matlab——三元二次函数求最值

    fmincon函数 今天晚上帮姐姐求一个方程的最值 果断用matlab啊 刚开始想得挺简单的 就是for循环 后来一想计算量太大 百度了一下都是用fmincon这个函数 可是算出来的是最小值 然后又找求最大值的函数 可是找了半天没找到 最后
  • 右键菜单添加命令行,右键菜单增加editplus

    我们在运行中输入cmd命令 默认的输入路径是 C Documents and Settings Administrator 而我们所用工具的安装路径常常不在这个路径下 这样会为一些命令的输入造成麻烦 下面通过修改注册表解决这个麻烦 运行 r
  • 机器学习——KNN算法

    机器学习 KNN算法 文章目录 机器学习 KNN算法 前言 一 KNN原理基础 二 sklearn的基本建模流程 三 KNN算法调优 选取最优的K值 四 KNN中距离的相关讨论 1 KNN使用的是什么距离 2 距离类模型的归一化需求 五 K
  • 快速对比UART、SPI、I2C通信的区别与应用

    参考 带你快速对比SPI UART I2C通信的区别与应用 作者 一口Linux 网址 https mp weixin qq com s 4 RSM2jk2W6nTboO1W8HCw 电子设备之间的通信就像人类之间的交流 双方都需要说相同的
  • webpack进阶--01--环境变量的设置

    环境变量的设置 在用webpack作为打包工具的项目中 环境变量共有三种 node运行时的环境变量 webpack配置对象的环境变量 js运行时的环境变量 node运行时的环境变量 在node环境中 通过process env可以获取nod