npm脚本学习(一)打包:cross-env NODE_ENV=production env_config=uat node build/build.js

很好奇npm脚本(package.json中的scripts)都是什么意思,然后就开始一点一点去学习,觉得越挖越觉得自己知道的东西太少了,所以记录一下自己学到的一些知识。

一、process.env

process对象是一个node的全局变量,是在node应用程序中始终可用的,在终端中输入node,再输入process.env就可以输出一些用户环境信息,但输入process.env.NODE_ENV显示的的undefined
在这里插入图片描述
二、process.env.NODE_ENV
NODE_ENV属性并不是process.env的原有属性,而是人为定义的
1.再webpack4之前通过DefinePlugin来定义当前的环境,DefinePlugin允许我们创建全局变量,可以在编译时进行设置,因此我们可以使用该属性来设置全局变量来区分开发环境和正式环境

const webpack = require('webpack');

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

如果直接打印process.env.NODE_ENV,输出结果为undefined,因为我们没有给它设置值
需要在package.json的scripts中设置,就可以打印出来了

"build:uat": "cross-env NODE_ENV=production env_config=uat node build/build.js"
"build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",

2.在webpack4之后中直接在mode中配置

const webpack = require('webpack');

module.exports = {
	mode: 'development',
    entry: {
        app: './src/app'
    },
    output: {
        path: 'dist',
        filename: 'bundle.js'
    }
};

三、cross-env
在这里插入图片描述
由于上边这个问题,cross-env就出现了,它是运行跨平台设置和使用环境变量的脚本,我们就可以不受平台的限制,使用它设置NODE_ENV为不同的参数打包了

Webpack 是一个强大的前端模块打包工具,它可以帮助你在构建过程中处理各种环境变量、运行命令和定制化构建流程。对于你的需求,首先你需要设置一个名为 `cross-env` 的外部环境变量处理器,这将允许你在命令行中动态地传递环境变量给你的脚本。`cross-env` 是一个 Node.js 模块,用于在 Windows 和 Unix 系统上设置一致的环境变量,避免跨平台问题。 要按照你给出的命令 (`npm run build:custom h5-vx-test`) 来打包并将结果放在特定位置,你需要做以下几个步骤: 1. **安装**:如果还未安装,先通过 npm 安装 `cross-env`: ``` npm install -D cross-env ``` 2. **配置**:在你的项目根目录的 `package.json` 文件里,创建一个 `scripts` 节点,加入如下的配置: ```json "scripts": { "build:custom:h5-vx-test": "cross-env NODE_ENV=test UNI_PLATFORM=h5 webpack --config path/to/your/webpack.config.js --output-path=/path/to/output/directory" }, ``` 这里,`path/to/your/webpack.config.js` 应该替换为你实际的 Webpack 配置文件路径,`/path/to/output/directory` 是你想要打包后的文件输出目录。 3. **设置环境变量**:在运行构建命令前,确保已经设置了正确的环境变量。例如,在命令行输入: ```sh export NODE_ENV=test UNI_PLATFORM=h5 npm run build:custom:h5-vx-test ``` 4. **构建**:最后,执行 `npm run build:custom:h5-vx-test`,Webpack 将根据指定的环境变量和配置文件,打包并放置到你指定的目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值