ASP.NET Core如何在部署时进行Webpack构建

9

我有一个aspnet core应用程序,其中包含vue.js部分,我使用webpack构建一切正常。现在我正在寻找创建生产版本的解决方案,以创建我的vue捆绑包的缩小版本并在生产模式下运行vue(不带控制台日志)。我在webpack.config中设置了生产模式:

if (process.env.NODE_ENV === 'production') {
    module.exports.plugins = [
        new webpack.DefinePlugin({
            'process.env': {
                NODE_ENV: '"production"'
            }
        }),
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                warnings: false
            }
        })
    ]
} else {
    module.exports.devtool = '#source-map'
}

当我通过gulp对其进行webpack时,process.env.NODE_ENV始终为undefined。然后我尝试使用Microsoft.AspNetCore.SpaServices,并在startup.cs中使用以下行:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
    if(env.IsDevelopment())
        app.UseWebpackDevMiddleware();
...
}

这也像我的 gulp 配置一样正常工作,而且 process.env.NODE_ENV 属性被设置为 'development'

现在我尝试在 VS 2017 中创建生产构建(生成 -> 发布项目名称),但没有运行 webpack 任务。

所以我尝试在我的 *.csproj 文件中添加以下内容:

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <Exec Command="npm run build" />
</Target>

这会抛出错误:命令“npm run build”以代码1退出。

现在我已经没有其他想法来解决它,希望有人能帮助我。谢谢!


构建输出通常会提供比exited with code 1更多的信息。是什么导致了npm命令的失败? - Bert
npm ERR!缺少脚本:build,如果我尝试使用命令 gulp min,会出现这些错误: - wendt88
\node_modules\gulp-sass\node_modules\node-sass\lib\binding.js:15 throw new Error(errors.missingBinary()); ^EXEC(0,0): 错误 : 缺少绑定 \node_modules\gulp-sass\node_modules\node-sass\vendor\win32-x64-48\binding.node Node Sass 无法找到当前环境的绑定:Windows 64 位,使用 Node.js 6.x 以下环境已找到绑定:
  • Windows 64 位,使用 Node.js 5.x 这通常是因为您的环境在运行 npm install 后发生了变化。 运行 npm rebuild node-sass 来构建适用于您当前环境的绑定。
- wendt88
是的,只需要运行npm install命令。 - Bert
1个回答

13

使用以下方式解决:.csproj文件:

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <Exec Command="npm install" />
    <Exec Command="npm run production" />
</Target>

并在我的 package.json 文件中添加脚本:

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack --hide-modules",
    "production": "cross-env NODE_ENV=production webpack --hide-modules"
}

这需要安装webpackcross-env包(以及在webpack期间使用的所有其他包)并且有一个可用的webpack.config.js

询问是否有人对我的webpack.config.js或其他代码感兴趣


cross-env NODE_ENV=production webpack --config .... 未被识别为内部或外部命令、可执行程序或批处理文件。 - Thanasis Ioannidis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接