gpt4 book ai didi

docker - Webpack、asp.net 核心、docker : building webpack with dotnet debug or release build

转载 作者:行者123 更新时间:2023-12-01 06:05:24 24 4
gpt4 key购买 nike

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

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

*但是, vendor 捆绑包永远不会重建,--env.prod 也不会重建。 webpack 构建永远运行。我假设这一切都有效(即使在示例中)仅仅是因为文件的一个版本已提交到存储库。

运行dotnet rundotnet build还不够,因为这不涉及 webpack。我可以在 package.json 中提供一些脚本为此,我不知道如何(或是否)可以将其嵌入到 Visual Studio 的构建中 - 另外,使用 npm 感觉有点脏而不是 dotnet直接地。

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

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

最佳答案

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

  • 构建、部署等通过 npm 脚本
  • 处理
  • 每当有人 checkout 分支、拉取提交或添加新的 vendor 依赖项时,他们都会运行 npm run build-webpack-dev-vendor ,这是一个运行 npm-run webpack --env.dev --config ./config/webpack.config.vendor.js 的 npm 脚本
  • 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 vendor 构建。
    注意:需要 npm-run要安装。
    docker 脚本
    这些脚本用于构建和发布我们的 docker 镜像。
    我们有脚本的快速变体,可以加快发布速度(无需重新构建,无需额外登录)。
    "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",
    开发人员应该检查构建输出,如果应用程序中有任何捆绑包应该移动到 vendor 捆绑包(因此在 webpack 构建中使用 --display-modules)。
    补充脚本
    最后,并不是我们团队中的每个人都在使用 Visual Studio(例如设计师)。我们为他们提供了脚本和一些更通用的脚本。
    快速变体跳过 npm install ,构建 vendor 包和恢复 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"
    我希望这会有所帮助,我愿意就如何改进这一点提出建议:)

    关于docker - Webpack、asp.net 核心、docker : building webpack with dotnet debug or release build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592577/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com