如何从package.json“脚本”执行powershell ps1脚本?

时间:2017-09-21 22:04:53

标签: node.js angular powershell npm package.json

如何从package.json“scripts”执行PowerShell ps1脚本?

我知道如何在package.json“scripts”中设置基本脚本。例如,使用以下配置,我可以执行“npm run test”,它将向控制台输出“这只是一个测试”:

“scripts”:{     “测试”:“回声”这只是一个测试\“”   }

但是,我有一个更高级的场景,我想执行PowerShell脚本。像这样:

  "scripts": {
    "buildAngular": "buildAngular.ps1"
  }

我可以通过脚本对象执行这样的ps1脚本吗?是否需要任何特殊的设置/配置?还有其他限制吗?

3 个答案:

答案 0 :(得分:15)

假设powershell在你的PATH中,你可以这样称呼它:

"scripts": {
    "test": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./test.ps1"
}

使用Powershell v4在Windows 7上测试。

限制是您需要安装Powershell并在PATH中。我没有用Powershell for Linux测试它,所以不确定这个解决方案现在是否可以移植到其他平台。

答案 1 :(得分:3)

您可以通过npm config set script-shell "powershell"或环境变量$env:npm_config_script_shell="powershell"设置script-shell config

那么您就可以使用

"scripts": {
    "test": "Write-Host 'this is only a test'"
}

"scripts": {
    "buildAngular": ".\\buildAngular.ps1"
}

我不确定您是否可以提供-NoProfile之类的参数。

答案 2 :(得分:0)

在 PowerShell 命令前加上“powershell”,例如

"command": "powershell Remove-Item ..\\folder\\file; Copy-Item -Path folder\\* -Destination ..\\other-folder -Recurse",
"buildAngular": "powershell buildAngular.ps1"