加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Webpack,asp.net核心,docker:使用dotnet调试或发布版本构建webp

发布时间:2020-12-16 09:20:46 所属栏目:asp.Net 来源:网络整理
导读:我有一个asp.net核心应用程序,类似于aspnetcore-spa提供的. Webpack设置为–env.prod和–env.dev,它通过 JavaScriptServices集成. 从Visual Studio 2015构建和运行应用程序似乎工作正常*.使用开发环境的调试版本在Kestrel上正常运行 – webpack中间件(重新)
我有一个asp.net核心应用程序,类似于aspnetcore-spa提供的. Webpack设置为–env.prod和–env.dev,它通过 JavaScriptServices集成.

从Visual Studio 2015构建和运行应用程序似乎工作正常*.使用开发环境的调试版本在Kestrel上正常运行 – webpack中间件(重新)构建客户端应用程序并且热模块替换效果很好(虽然有点慢 – 很可能是由于它必须复制的硬编码引用资产).

*但是,从不重建供应商包,也不会运行–env.prod webpack构建.我认为这一切都有效(即使在示例中)仅仅因为文件的一个版本被提交到存储库.

运行dotnet run或dotnet build是不够的,因为这不会触及webpack.我可以在package.json中为此提供一些脚本,我不知道如何(或者如果)我可以在Visual Studio的构建中嵌入它 – 加上,我觉得使用npm而不是dotnet直接有点脏.

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

如何将webpack构建集成到Visual Studio(甚至更好的,dotnet)?

解决方法

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

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

来自webpack的构建输出被放入wwwroot目录,其整个内容被gitignored(除了.gitignore).

Webpack脚本

这些脚本用于任何或所有webpack构建.

"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",

我们的配置无法识别prod和dev供应商构建.
注意:需要安装npm-run.

Docker脚本

这些脚本用于构建和发布我们的docker镜像.
我们有快速的脚本变体,可以加快发布速度(无需重建,无需额外登录).

"docker-build-prod": "dotnet publish --configuration Release && docker build binReleasenetcoreapp1.1publish -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",

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

补充脚本

最后,并非我们团队中的每个人都使用Visual Studio(例如设计师).我们为它们提供了脚本和一些更通用的脚本.
快速变体跳过npm install,构建供应商包并恢复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"

我希望有帮助,我愿意就如何改进这个问题提出建议:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读