npm常用模块之cross-env使用

更多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 [email protected]

使用

我在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在命令行界面上按调用的 事件时。

原文地址:https://www.cnblogs.com/jiaoshou/p/12187504.html

时间: 2024-10-11 13:22:29

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

Ansible 之 概念和常用模块介绍

1  概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括如下的特性: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:

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

Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigParser模块 shelve模块 xml处理 re正则表达式 一.Python模块的定义 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中,如

python学习第六课 --常用模块

常用模块 sys sys.argv  命令行参数列表,第一个元素是程序本身路径 sys.exit(n)  退出程序,正常退出时exit(0) sys.version sys.maxint  最大的int值 sys.path 返回模块的搜索路径 sys.paltform sys.stdout.wirte("hello") val = sys.stdin.readline()[:-1] logging import logging logging.basicConfig(filename=

day5 -常用模块

一.定义:模块:用来从逻辑上组织py代码(变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操

pyhton学习笔记5:常用模块:datatime,random,json,re

一.模块基础: 1.  定义 能够实现某个功能的代码集合(本质是py文件)  test.p的模块名是test包的定义:用来从逻辑上组织模块,本质就是一个目录(必须带有一个__init__.py文件) 2. 导入方法: import module import module1,module2 from module import * from module import m1,m2,m3 from module import logger as module_logger 3.import 本质

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

Day05 - Python 常用模块

1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模块support.py 1 def print_func( par ): 2 print("Hello : ", par) 3 return 1)import 语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: import module1[, m

Python-Day5 常用模块学习

一.模块介绍 通俗点说,就是把常用的一些功能单独放置到一个.py文件中,方便其他文件来调用,这样的一个文件可以称为一个模块. 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 二.导入模块 Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入.导入模块有一下几种方法: import module from module.xx.xx import xx from module.xx.xx import xx as r

文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象

本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是操作特定格式的文件. 特定的格式如下: # [section1] #节点名称 k1 = v1 #值1 k2 = v2 #值2 [section2] #节点名称 k1 = v1 #值 获取文件中的所有节点 ##configparser 模块使用 #1.获取所有的节点 import configpars