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

wen*_*t88 4 gulp webpack vue.js asp.net-core 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'
}
Run Code Online (Sandbox Code Playgroud)

但是process.env.NODE_ENV当我通过gulp进行webpack时总是未定义的.比我尝试使用Microsoft.AspNetCore.SpaServices这一行startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
    if(env.IsDevelopment())
        app.UseWebpackDevMiddleware();
...
}
Run Code Online (Sandbox Code Playgroud)

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

现在我尝试在VS 2017(Build - > Publish Projectname)中创建生产版本,但没有运行webpack任务.

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

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <Exec Command="npm run build" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这会引发错误:命令"npm run build"退出,代码为1.

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

wen*_*t88 7

解决了使用:in .csproj:

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
    <Exec Command="npm install" />
    <Exec Command="npm run production" />
</Target>
Run Code Online (Sandbox Code Playgroud)

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

"scripts": {
    "dev": "cross-env NODE_ENV=development webpack --hide-modules",
    "production": "cross-env NODE_ENV=production webpack --hide-modules"
}
Run Code Online (Sandbox Code Playgroud)

这个需求webpackcross-env包(以及webpack期间所有其他使用的包)安装和工作webpack.config.js

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