让我们看看在 cross-env 出现之前,人们是怎么在不同的平台上设置环境变量、运行命令。
Windows 命令提示符
在命令提示符(cmd)中执行多个命令
Character | Syntax | Definition |
---|---|---|
& [...] |
command1 & command2 |
Use to separate multiple commands on one command line. Cmd.exe runs the first command, and then the second command. |
&& [...] |
command1 && command2 |
Use to run the command following && only if the command preceding the symbol is successful. Cmd.exe runs the first command, and then runs the second command only if the first command completed successfully. |
` | [...]` | `command1 |
( ) [...] |
(command1 & command2) |
Use to group or nest multiple commands. |
; or , |
command1 parameter1;parameter2 |
Use to separate command parameters. |
翻译一下就是:
command1 & command2
: 依次执行 command1、command2。command1 && command2
: 执行 command1,当 command1 执行成功时,执行 command2。command1 || command2
: 执行 command1,当 command1 执行失败时,执行 command2。
&&
和 ||
实际上就是 与、或
逻辑运算。
在命令提示符(cmd)中设置环境变量
set variablename=value # 增加变量
set VariableName # 查看变量
set VariableName= # 删除变量
Windows 命令不区分大小写,
SET
同样有效。
在命令提示符(cmd)中的使用示例
set DEBUG=server:* && npm start
set NODE_ENV=production && node app.js
Windows PowerShell
在 PowerShell 中设置环境变量
$env:NODE_ENV="production"
$env:NODE_ENV=""
Shell
在 Shell 中执行多个命令
;
: 各个命令都会执行,但不保证每个命令都执行成功。各命令的执行给果,不会影响其它命令的执行。&&
: 若前面的命令执行成功,才会去执行后面的命令。||
: 只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。&
: 在命令或者脚本后面增加&
符号,可以使命令或脚本在后台执行。
在 Shell 中执行多行命令
Shell 支持转义,输入 \
后再敲回车,可以在新行中继续输入命令。新行前一般会有新行提示符,如 >
。
$ ls
$ l\↵
> s
Windows 命令提示符(cmd)中命令行换行符为
^
。
在 Shell 中设置环境变量
NODE_ENV=production
只对本进程有效。export NODE_ENV=production
对子进程同样有效。
Shell 使用示例
date whoami # 会报错
date; whoami
# macOS/Linux/MSYS2
# 只对本行的命令有效
NODE_ENV=production node app.js
# 对当前 shell 有效
export NODE_ENV=production
node app.js
DEBUG=server:* npm start
DEBUG=server:*; npm start # 两者独立,环境变量不会对后面的命令产生影响
export DEBUG=server:*; npm start
export DEBUG=server:* && npm start
其他使用示例
export LIB_THEME=light && npm run build && cp ./dist/index.css ./dist/index.light.css ; cp ./dist/index.css ./src/index.light.css ; export LIB_THEME=dark
set LIB_THEME=light && npm run build && cp ./dist/index.css ./dist/index.light.css ; cp ./dist/index.css ./src/index.light.css ; set LIB_THEME=dark