【问题标题】:ASP.NET Core - Run webpack on Azure with git deployASP.NET Core - 使用 git deploy 在 Azure 上运行 webpack
【发布时间】:2017-04-10 14:05:45
【问题描述】:
我正在开发一个 ASP.NET Core Web 应用程序 (.csproj),它直接从 git 存储库部署在 Azure 上。我还使用 webpack 将生产包生成到 wwwroot/build 文件夹中。
我不希望这些文件在我的仓库中,所以我将它们排除在外,但当然在执行 gitdeploy 时文件不会发送到服务器。问题是我需要运行一个自定义部署脚本,这样我才能运行 npm run prod-build (在 package.json 文件中设置的脚本),它使用生产标志运行 webpack。我正在研究一个 kudu 脚本,但找不到任何新的 ASP.NET Core 格式的示例。
我可以创建一个部署分支并将包推送到其中,但我正在尝试寻找一个“更清洁”的解决方案。
对于实现这一目标的最佳方法有什么想法吗?
谢谢!
【问题讨论】:
标签:
git
azure
deployment
webpack
asp.net-core
【解决方案1】:
.csproj 文件中的以下配置适用于我的 webpack 脚本。您可以尝试将其替换为您的脚本。
<Target Name="RunWebpack" BeforeTargets="Publish">
<Exec Command="npm install" />
<Exec Command="npm install webpack" />
<Exec Command="npm install vue-loader" />
<Exec Command="npm install vue-template-compiler" />
<Exec Command="node node_modules/webpack/bin/webpack.js --config webpack.config.js --env.prod" />
</Target>
【解决方案2】:
一个选项是将您的应用服务的默认节点(又名 NodeJS)版本设置为较新的版本,例如10.14.1。
要更改默认节点版本,请打开 Azure 门户并导航到 Azure 应用服务的应用程序设置。然后将名为WEBSITE_NODE_DEFAULT_VERSION 的设置更改为10.14.1(或更高版本)。
有了这些,您可以将 webpack 添加到您的 package.json 文件中的 devDependencies 并在项目的构建后事件中运行 npx webpack。这假定文件 webpack.config.js 位于项目的根目录(与 .csproj 文件相同的目录)。
要确定哪些节点版本可用于您的应用服务,您可以使用“高级工具”(也可从 Azure 门户中的应用服务获得)。打开高级工具的浏览器窗口后,单击“调试控制台”,然后单击“PowerShell”。使用dc 切换到目录D:\Program Files (x86)\nodejs。每个安装的节点版本都在一个单独的目录中。
注意事项:
npx - 严格来说 - 是 npm 的一部分。但是,更高版本的 node 也将具有更新版本的 npm。节点 10.14.1 附带 npm 版本 6.4.1。 npx 是在 npm 5.2 版本中引入的。
要将 webpack 添加到您的 package.json 文件,请在该 package.json 文件的目录中执行 npm install webpack --save-dev。