我的目标是一个接一个地运行两个命令来构建Electron。我使用Powershell而不是bash来实现这一目标,因此最终可以构建一个Win32二进制文件。
通过Powershell运行:
PS C:\Users\digit\Dropbox\Programming\project\app> npm run build:fake --verbose
npm info it worked if it ends with ok
npm verb cli [ 'C:\\Program Files\\nodejs\\node.exe',
npm verb cli 'C:\\Users\\digit\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
npm verb cli 'run',
npm verb cli 'build:fake',
npm verb cli '--verbose' ]
npm info using npm@6.9.0
npm info using node@v11.11.0
npm verb run-script [ 'prebuild:fake', 'build:fake', 'postbuild:fake' ]
npm info lifecycle app@1.0.0~prebuild:fake: app@1.0.0
npm info lifecycle app@1.0.0~build:fake: app@1.0.0
> app@1.0.0 build:fake C:\Users\digit\Dropbox\Programming\project\app
> echo 'test'; echo 'test2'
'test'; echo 'test2'
npm verb lifecycle app@1.0.0~build:fake: unsafe-perm in lifecycle true
npm verb lifecycle app@1.0.0~build:fake: PATH: C:\Users\digit\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\digit\Dropbox\Programming\project\app\node_modules\.bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp;C:\Python27\;C:\Python27\Scripts;C:\Program Files (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:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\doxygen\bin;C:\Program Files\CMake\bin;C:\Program Files\NVIDIA Corporation\Nsight Compute 2019.1\;C:\Program Files (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\Yarn\bin;C:\Program Files\NASM;C:\Program Files\nodejs;C:\MinGW\bin;C:\MinGW\msys\1.0;
npm verb lifecycle app@1.0.0~build:fake: CWD: C:\Users\digit\Dropbox\Programming\project\app
npm info lifecycle app@1.0.0~postbuild:fake: app@1.0.0
npm verb exit [ 0, true ]
npm timing npm Completed in 200ms
npm info ok
PS C:\Users\digit\Dropbox\Programming\project\app> wsl npm run build:fake
由于某种原因,它在应运行每个用分号分隔的命令时会回显整个命令。
在Ubuntu上运行此程序效果很好:
> app@1.0.0 build:fake /mnt/c/Users/digit/Dropbox/Programming/project/app
> echo 'test'; echo 'test2'
test
test2
我正在使用https://www.npmjs.com/package/run-script-os
操作系统:Windows 10
答案 0 :(得分:1)
npm默认情况下会使用cmd.exe
在Windows上运行脚本-不管您碰巧从哪个shell调用{em> from 的可执行文件,都可以解释您的症状。 [1]
如果您希望npm使用 PowerShell 来运行脚本,请使用(npm v5.1 +):
Windows PowerShell:
npm
PowerShell核心:
npm config set script-shell powershell
注意:以上内容将PowerShell配置为与您的项目 all 一起使用;您还可以按项目进行操作-请参见this answer。
[1] npm config set script-shell pwsh
不是;
中的stament分隔符,并且无法识别cmd.exe
引号;因此,'...'
命令将echo
解释为要回显的文字字符串。