aspnet core how to webpack build on deploy



我有一个带有 vue.js 部分的 aspnet 核心应用程序,我用 webpack 构建了它,一切正常。现在我搜索一个解决方案来使用它创建一个生产构建,创建我的 vue 捆绑包的缩小版本并在生产模式下运行 vue(没有 console.logs(,我在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 进行网络打包时,process.env.NODE_ENV总是未定义的。比我试图在startup.cs中对这一行使用Microsoft.AspNetCore.SpaServices

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

这也很好用,就像我的 gulp 配置和process.env.NODE_ENV属性设置为 'development'

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

所以我试图在我的 *.csproj 中添加这个:

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

这将引发错误:命令"npm run build"以代码 1 退出。

现在我没有其他想法来解决它,希望任何人都可以帮助我。感谢!

使用以下命令解决:在.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或其他代码交涉

最新更新