【问题标题】:aspnet core how to webpack build on deployaspnet core如何在deploy上构建webpack
【发布时间】:2017-08-24 15:11:51
【问题描述】:

我有一个带有 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 总是未定义。 比我尝试在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 -> Publish Projectname),但没有运行 webpack 任务。

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

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

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

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

【问题讨论】:

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

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


【解决方案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 或其他代码感兴趣

【讨论】:

  • cross-env NODE_ENV=production webpack --config .... 不是内部或外部命令、可运行程序或批处理文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2022-07-21
  • 2019-08-21
  • 1970-01-01
  • 2019-09-29
  • 2021-04-18
  • 2018-06-11
相关资源
最近更新 更多