更多npm常用模块使用请访问:npm常用模块汇总


cross-env这是一款运行跨平台设置和使用环境变量的脚本。

为什么需要cross-env?

NODE_ENV=production像这样设置环境变量时,大多数Windows命令提示符都会阻塞 。(Windows上的Bash是例外,它使用本机Bash。)同样,Windows和POSIX命令使用环境变量的方式也有所不同。对于POSIX,您可以使用:$ENV_VAR 和在Windows上可以使用%ENV_VAR%

cross-env这样,您就可以使用单个命令,而不必担心为平台正确设置或使用环境变量。就像在POSIX系统上运行时一样,只需对其进行设置即可,并且cross-env会妥善设置。

在window下配置

#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
set NODE_ENV #如果不存在则添加环境变量
set NODE_ENV=production #环境变量追加值 set 变量名=%变量名%;变量内容
set path=%path%;C:\web;C:\Tools #某些时候需要删除环境变量
set NODE_ENV=

在linux下配置

#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
echo $NODE_ENV #如果不存在则添加环境变量
export NODE_ENV=production #环境变量追加值
export path=$path:/home/download:/usr/local/ #某些时候需要删除环境变量
unset NODE_ENV #某些时候需要显示所有的环境变量
env

更多使用文档请点击访问cross-env工具官网

安装

一键安装不多解释

npm install --save-dev cross-env

警告!确保在安装软件包时可以正确拼写,以免错误安装恶意软件

注意:cross-env的版本6仅支持Node.js 8和更高版本,才能在Node.js 7或更低版​​本的安装版本5上使用 npm install --save-dev cross-env@5

使用

我在npm脚本中使用了它:

{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}

最终,执行的命令(使用cross-spawn)为:

webpack --config build/webpack.config.js

NODE_ENV环境变量将被设置cross-env

您也可以将命令拆分为多个命令,或者将环境变量声明与实际命令执行分开。您可以这样操作:

{
"scripts": {
"parentScript": "cross-env GREET=\"Joe\" npm run childScript",
"childScript": "cross-env-shell \"echo Hello $GREET\""
}
}

其中childScript包含要执行的实际命令并parentScript设置要使用的环境变量。然后,而不是运行childScript,而是运行父项。这对于使用不同的env变量启动同一命令或当环境变量太长而无法将所有内容放在一行中时非常有用。这也意味着$GREET即使在通常要求使用Windows的Windows上,也可以使用env var语法%GREET%

如果您在美元符号前加上奇数个反斜杠,则不会替换表达式语句。请注意,这意味着在转义JSON字符串后使用了反斜杠。"FOO=\\(BAR"将不会被替换。 "FOO=\\\\\)BAR"虽然会被替换。

最后,如果要传递JSON字符串(例如,使用ts-loader时),则可以执行以下操作:

{
"scripts": {
"test": "cross-env TS_NODE_COMPILER_OPTIONS={\\\"module\\\":\\\"commonjs\\\"} node some_file.test.ts"
}
}

要特别注意三倍反斜线(\\\)之前的 双引号 (")和缺少的单引号 (')。为了同时在Windows和UNIX上运行,必须同时满足这两个条件。

cross-envcross-env-shell

cross-env模块公开了两个容器:cross-envcross-env-shell。第一个使用来执行命令cross-spawn,第二个使用shellNode的选项spawn

主要用例cross-env-shell是当您需要在整个嵌入式命令行脚本中而不是仅在一个命令中设置环境变量时。

例如,如果您希望将环境变量应用于一系列串联的命令,则需要将其用引号引起来并使用 cross-env-shell代替cross-env

{
"scripts": {
"greet": "cross-env-shell GREETING=Hi NAME=Joe \"echo $GREETING && echo $NAME\""
}
}

经验法则是:如果要传递给cross-env包含要解释的特殊Shell字符的命令,请使用 cross-env-shell。否则请坚持cross-env

在Windows上cross-env-shell,如果要 在程序内部处理信号事件,则 需要使用。常见的情况是当您想要捕获SIGINT通过Ctrl + C在命令行界面上按调用的 事件时。

npm常用模块之cross-env使用的更多相关文章

  1. npm常用模块之bable使用

    更多npm常用模块使用请访问:npm常用模块汇总 bable这是JavaScript编译器. Babel是一个工具链,主要用于在当前和较旧的浏览器或环境中将ECMAScript 2015+代码转换为J ...

  2. npm常用模块之mkdirp使用

    更多npm常用模块使用请访问:npm常用模块汇总 mkdirp这是一款在node.js中像mkdir -p一样递归创建目录及其子目录. 更多使用文档请点击访问mkdirp工具官网. 安装 一键安装不多 ...

  3. npm常用模块汇总

    npm常用模块汇总: 点击插件名字,查看使用文档 npm常用模块汇总 node常用模块汇总 gulp常用插件汇总 npx 使用教程:npx使用教程 bable:bable这是JavaScript编译器 ...

  4. npm常用模块之chai使用

    更多npm常用模块使用请访问:npm常用模块汇总 chai这是一款用于节点和浏览器的BDD / TDD断言库,可以与任何javascript测试框架完美地配对. 更多使用文档请点击访问chai工具官网 ...

  5. npm常用模块

    https://blog.csdn.net/heliumlau/article/details/70577727

  6. node常用模块汇总

    node常用模块汇总: 点击插件名字,查看使用文档 npm常用模块汇总 node常用模块汇总 gulp常用插件汇总 mkdirp:在node.js中像mkdir -p一样递归创建目录及其子目录

  7. npm常用命令详解

    ~~~https://www.npmjs.org/有比较全的api文档 NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的 ...

  8. npm常用命令

    npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...

  9. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

随机推荐

  1. 将STM32F407片外SRAM作运行内存

    本例演示用的软硬件: 片内外设驱动库:STM32CubeF41.24.1的HAL库1.7.6,2019年4月12日 IDE:MDK-ARM 5.28.0.0,2019年5月 开发板:片外SRAM挂在F ...

  2. 为了控制Bean的加载我使出了这些杀手锏

    故事一: 绝代有佳人,幽居在空谷 美女同学小张,在工作中遇到了烦心事.心情那是破凉破凉的,无法言喻. 故事背景是最近由于需求变动,小张在项目中加入了MQ的集成,刚开始还没什么问题,后面慢慢问题的显露出 ...

  3. Window下,Jenkins忘记密码解决方法

    没有修改过密码的情况下找回初始密码(或者第一次部署的时候) 进入目录 D:\jenkins\secrets ,找到文件 initialAdminPassword 在jenkins页面,输入登录名adm ...

  4. php单例模式的实现

    <?php /** * 设计模式之单例模式 * $_instance必须声明为静态的私有变量 * 构造函数和析构函数必须声明为私有,防止外部程序new * 类从而失去单例模式的意义 * getI ...

  5. php 页面分页样式 示例

    <?php class SubPages { private $each_disNums; //每页显示的条目数 private $nums; //总条目数 private $current_p ...

  6. 一条Sql的Spark之旅

    背景 ​ SQL作为一门标准的.通用的.简单的DSL,在大数据分析中有着越来越重要的地位;Spark在批处理引擎领域当前也是处于绝对的地位,而Spark2.0中的SparkSQL也支持ANSI-SQL ...

  7. Flutter Widgets 之 InkWell 和 Ink

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 InkWell InkWell组件在用户点击时出现&quo ...

  8. 论文翻译:2015_DNN-Based Speech Bandwidth Expansion and Its Application to Adding High-Frequency Missing Features for Automatic Speech Recognition of Narrowband Speech

    论文地址:基于DNN的语音带宽扩展及其在窄带语音自动识别中加入高频缺失特征的应用 论文代码:github 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never ...

  9. cir from c# 托管堆和垃圾回收

    1,托管堆基础 调用IL的newobj 为资源分配内存 初始化内存,设置其初始状态并使资源可用.类型的实列构造器负责设置初始化状态 访问类型的成员来使用资源 摧毁状态进行清理 释放内存//垃圾回收期负 ...

  10. 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公

    当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...