我有一个带有 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"
}
这需要安装webpack
和cross-env
包(以及Webpack期间所有其他使用的包(和一个工作webpack.config.js
询问是否有人与我的webpack.config.js
或其他代码交涉