0

ASP.NET Core 2.0 项目引入了 Aurelia,使用

au new --here

我想在发布解决方案时创建以下工件

\wwwroot\dist\app.bundle.js
\wwwroot\dist\vendor.bundle.js

我可以通过手动运行来实现

npx webpack --config webpack.netcore.config.js

但是我想在发布时启动 webpack 构建:

dotnet publish -c Release

我的最终目标是让 VSTS CI/CD 进程使用 MSBuild 自动捆绑上述要求的 SPA 文件。

请注意,在开发过程中,我已经通过热模块更换

using Microsoft.AspNetCore.SpaServices.Webpack;

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
    {
      HotModuleReplacement = true, 
      ConfigFile="webpack.netcore.config.js",
      HotModuleReplacementClientOptions = new Dictionary<string,string>{
        {"reload", "true"}
      }
    });
}

这按预期工作。但现在我需要在发布期间实现相同的目标。

作为快速修复,我添加了一个构建后事件

  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="npx webpack --config webpack.netcore.config.js" />
  </Target>

如何获得此处解释的自定义 MSBuild RunWebpack 目标?

4

1 回答 1

1

所以我也遇到了同样的问题。我注意到在webpack.config.js文件中它有以下几行:

output: {
    path: outDir,
    publicPath: baseUrl,
    filename: production ? '[name].[chunkhash].bundle.js' : '[name].[hash].bundle.js',
    sourceMapFilename: production ? '[name].[chunkhash].bundle.map' : '[name].[hash].bundle.map',
    chunkFilename: production ? '[name].[chunkhash].chunk.js' : '[name].[hash].chunk.js'
  },

但是在webpack.netcore.config.js文件中它有:

config.output.filename = '[name].bundle.js';

因此,当您发布它时,它希望 .net 核心复制 app.bundle.js 和 vendor.bundle.js 文件,但它们不存在,因为 webpack 由于缓存目的而将其使用不同的文件名。因此,将该行替换为以下内容:

config.output.filename = '[name].[chunkhash].bundle.js';
于 2018-08-01T16:11:35.073 回答