Webpack,asp.net核心,docker:用dotnetdebugging或发布构buildwebpack

我有一个asp.net核心应用程序,类似于aspnetcore-spa提供的。 Webpack被设置为--env.prod--env.dev并通过JavaScriptServices集成。

从Visual Studio 2015构build和运行应用程序似乎工作正常*。 Debug Development环境在Kestrel上运行良好 – webpack中间件(重新)构build客户端应用程序和热门模块replace效果良好(虽然速度有点慢 – 很可能是由于需要复制硬编码的引用资源)。

*但是,供应商捆绑软件从不重build,也不会运行--env.prod webpack构build。 我认为这一切都可以(甚至在这个例子中)只是因为一个版本的文件被提交到版本库。

运行dotnet rundotnet build是不够的,因为这不会触摸webpack。 我可以在package.json中为此提供一些脚本,我不知道如何(或者如果)可以将它embeddedVisual Studio的构build中 – 另外,我直接使用npm而不是dotnet来感觉有点脏。

这整个问题也与我构build可debuggingDocker镜像的问题有关。 我想我可以在容器中运行webpack并复制所有的源代码 – 但是这仍然留下了一个问题:

我如何将webpack版本集成到Visual Studio(甚至更好, dotnet )?

我们通过我们的stream程解决了这个问题,并使用npm脚本

  • build筑,部署等通过npm脚本进行处理
  • 每当有人签出一个分支,提交或添加新的供应商依赖关系,他们运行npm run build-webpack-dev-vendor ,这是一个npm脚本运行npm-run webpack --env.dev --config ./config/webpack.config.vendor.js
  • Docker构build也是从npm脚本运行的

webpack的编译输出被放到wwwroot目录下,它的全部内容都是gitignored(除了.gitignore )。

Webpack脚本

这些脚本用于任何或所有webpack构build。

 "build-webpack-dev": "npm run build-webpack-dev-vendor && npm run build-webpack-dev-app", "build-webpack-dev-vendor": "npm-run webpack --config ./config/webpack.config.vendor.js --env.dev", "build-webpack-dev-app": "npm-run webpack --env.dev --display-modules", "build-webpack-prod": "npm run build-webpack-prod-vendor && npm run build-webpack-prod-app", "build-webpack-prod-vendor": "npm-run webpack --config ./config/webpack.config.vendor.js --env.prod", "build-webpack-prod-app": "npm-run webpack --env.prod --display-modules", 

我们的configuration不能辨别prod和dev供应商版本之间的区别。 注意:需要安装npm-run

Docker脚本

这些脚本用于构build和发布我们的泊坞窗图像。 我们有脚本的快速变体,加速发布(不重build,没有额外的login)。

 "docker-build-prod": "dotnet publish --configuration Release && docker build bin\\Release\\netcoreapp1.1\\publish -t company/product:tag --no-cache", "docker-publish-prod": "npm run docker-build-prod && docker login && docker push company/product:tag", "docker-publish-prod-fast": "docker push company/product:tag", "docker-login": "docker login", 

开发人员应该检查构build输出,如果在应用程序中有任何应该被移动到供应商捆绑包(因此在webpack版本中使用--display-modules )的包。

补充脚本

最后,并非我们团队中的每个人都使用Visual Studio(例如devise人员)。 我们为他们提供了脚本和一些更通用的脚本。 快速变体跳过npm install ,build立供应商包和恢复nuget包。

 "start-dev": "npm install && npm run build-webpack-dev && dotnet restore && dotnet run --configuration Debug --environment \"Development\"", "start-dev-fast": "dotnet run --configuration Debug --environment \"Development\"", "start-prod": "npm install && npm run build-webpack-prod && dotnet restore && dotnet run --configuration Release --environment \"Production\"", "start-prod-fast": "npm run build-webpack-prod-app && dotnet run --configuration Release --environment \"Production\"", 

最后,为了好的措施

 "refresh": "npm install && dotnet restore" 

我希望这有助于我开放的build议,如何改善这一点:)