我正在通过Windows容器内的gulp构建站点。
该容器在其中安装了nodejs和gulp-cli,如下所示(在Dockerfile中:]
#Install NodeJs
RUN (New-Object Net.WebClient).DownloadFile('https://nodejs.org/dist/v12.16.3/node-v12.16.3-win-x64.zip', 'node.zip'); \
Expand-Archive -LiteralPath 'node.zip' -DestinationPath '.' ; \
Start-Process -FilePath '.\node-v12.16.3-win-x64\npm' -NoNewWindow -Wait -ArgumentList 'install -g gulp-cli' ; \
$env:PATH = 'c:\tools\node-v12.16.3-win-x64;' + $env:PATH; \
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine);
您可以看到我正在将节点安装在c:\ tools \ node-v12.16.3-win-x64下的容器中。
在我的蛋糕脚本中,我尝试如下执行gulp文件:
StartProcess("cmd", new ProcessSettings {
Arguments = "/c gulp",
WorkingDirectory = projectDir)
});
但是似乎Start-Process找不到文件...我从cake Start-Process获取此输出:
Executing: "cmd" /c gulp
'gulp' is not recognized as an internal or external command
以交互方式运行容器,我可以看到它在那个位置的文件,并且如果我从projectDir运行gulp的全部工作。
我也尝试过像以下所有形式一样运行它,但均未成功:
StartProcess("powershell", new ProcessSettings { Arguments = "gulp", WorkingDirectory = projectDir) }); StartProcess("gulp"); StartProcess("gulp.cmd");
这是容器中有关npn,gulp版本的输出(从注释中请求):
我正在通过Windows容器内的口水进行建筑。容器中以如下方式(在Dockerfile中)安装了nodejs和gulp-cli:#Install NodeJs RUN(New-Object Net.WebClient)....
您可以尝试使用gulp应用程序的绝对路径。