aspnet核心如何在部署的webpack上构建

时间:2017-03-30 15:29:02

标签: webpack asp.net-core gulp vue.js visual-studio-2017

我有一个带有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进行webpack时,process.env.NODE_ENV总是未定义的。 我试图在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中创建生产版本(Build - > Publish Projectname),但没有运行webpack任务。

所以我试着在我的* .csproj中添加它:

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

这会引发错误:命令“npm run build”退出,代码为1。

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

1 个答案:

答案 0 :(得分:6)

决定使用: 在.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"
}

这需要webpack&amp;已安装cross-env个软件包(以及webpack期间使用的所有其他软件包)&amp;工作webpack.config.js

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

感兴趣