Node.js 如何在package.json脚本中运行多个powershell命令

Node.js 如何在package.json脚本中运行多个powershell命令,node.js,windows,powershell,npm,Node.js,Windows,Powershell,Npm,我的目标是一个接一个地运行两个命令来构建Electron。我使用的是Powershell,而不是bash来实现这一点,因此我最终可以构建win32二进制文件 通过Powershell运行: PS C:\Users\digit\Dropbox\Programming\project\app>npm运行构建:false--verbose npm信息如果以“ok”结尾,则有效 npm动词cli['C:\\Program Files\\nodejs\\node.exe', npm动词cli'C:\\Us

我的目标是一个接一个地运行两个命令来构建Electron。我使用的是Powershell,而不是bash来实现这一点,因此我最终可以构建win32二进制文件

通过Powershell运行:

PS C:\Users\digit\Dropbox\Programming\project\app>npm运行构建:false--verbose
npm信息如果以“ok”结尾,则有效
npm动词cli['C:\\Program Files\\nodejs\\node.exe',
npm动词cli'C:\\Users\\digit\\AppData\\Roaming\\npm\\node\u modules\\npm\\bin\\npm cli.js',
npm谓词cli“运行”,
npm动词cli“build:false”,
npm动词cli'--详细']
npm信息使用npm@6.9.0
npm信息使用node@v11.11.0
npm谓词运行脚本['prebuild:false'、'build:false'、'postbuild:false']
npm信息生命周期app@1.0.0~prebuild:false:app@1.0.0
npm信息生命周期app@1.0.0~build:fake:app@1.0.0
> app@1.0.0生成:假C:\Users\digit\Dropbox\Programming\project\app
>回声“测试”;回显“test2”
"测试",;回显“test2”
动词生命周期app@1.0.0~build:false:生命周期中不安全的烫发true
动词生命周期app@1.0.0~build:false:PATH:C:\Users\digit\AppData\Roaming\npm\node\u modules\npm\node\u modules\npm lifecycle\node gyp bin;C:\Users\digit\Dropbox\Programming\project\app\node\u modules\.bin;C:\Program Files\NVIDIA GPU计算工具包\CUDA\v10.1\bin;C:\Program Files\NVIDIA GPU计算工具包\CUDA\v10.1\libnvvp;C:\Python27\;C:\Python27\脚本;C:\ProgramFiles(x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\WINDOWS\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\ProgramFiles\Git\cmd;C:\ProgramData\Chocolate\bin;C:\ProgramFiles\nodejs\;C:\ProgramFiles(x86)\Thread\bin\;C:\ProgramFiles\doxygen\bin;C:\ProgramFiles\CMake\bin;C:\Program Files\NVIDIA Corporation\Nsight Compute 2019.1\;C:\ProgramFiles(x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\digit\AppData\Local\Microsoft\WindowsApps;C:\Users\digit\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\digit\AppData\Local\hyper\app-2.1.2\resources\bin;C:\Users\digit\AppData\Roaming\npm;C:\Users\digit\AppData\Local\Thread\bin;C:\ProgramFiles\NASM;C:\ProgramFiles\nodejs;C:\MinGW\bin;C:\MinGW\msys\1.0;
动词生命周期app@1.0.0~build:false:CWD:C:\Users\digit\Dropbox\Programming\project\app
npm信息生命周期app@1.0.0~postbuild:false:app@1.0.0
npm谓词退出[0,true]
npm定时在200ms内完成npm
npm信息正常
PS C:\Users\digit\Dropbox\Programming\project\app>wsl npm运行构建:false
出于某种原因,当它应该运行由分号分隔的每个命令时,它会回显整个命令

在Ubuntu上运行此功能效果良好:


> app@1.0.0构建:假/mnt/c/Users/digit/Dropbox/Programming/project/app
>回声“测试”;回显“test2”
测试
测试2
我正在利用


OS:Windows 10

npm默认情况下使用
cmd.exe
在Windows上运行脚本-不管您从哪个shell调用
npm
可执行文件,这解释了您的症状。[1]

如果希望npm使用PowerShell与一起运行脚本,请使用(npm v5.1+):

Windows PowerShell:

npm config set script-shell powershell
PowerShell核心:

npm config set script-shell pwsh
注意:以上配置PowerShell用于所有项目;您也可以在每个项目的基础上进行此操作-请参阅


[1]
不是
cmd.exe中的stament分隔符,并且
“…”
-无法识别引号;因此,
echo
命令解释了
'test';echo“test2”
作为要echo的文本字符串