airyland / vux-loader

hack into vue-loader
64 stars 37 forks source link

vux-loader 对process.env.NODE_ENV 参数太敏感,导致 build 完成后不退出。 #15

Closed wensonsmith closed 7 years ago

wensonsmith commented 7 years ago
module.exports = VuxLoader.merge(webpackConfig, {
    plugins: [
        'vux-ui',
        'duplicate-style'
    ]
})

这里作为通用部分,假如 process.env.NODE_ENV 不为 production 的时候,vux-loader 便不会执行duplicate-style 插件。 感觉这样 vux-loader 成为了一个黑盒子,讲道理应该交给用户的 webpack.config.js ,根据process.env.NODE_ENV去判断使用不使用duplicate-style , 而不应该放在vux-loader 内部去做处理。

同时还发现了一个 BUG, 当 process.env.NODE_ENV 为其他数值,比如 localtest, 在 vux-loader 插件 index.js 第19行,

if (process.env.NODE_ENV !== 'production' && !process.env.VUE_ENV && !/build\/build/.test(process.argv) && !/webpack\.prod/.test(process.argv)) {
   require('./libs/report')
}

这句话,会使 webpack build 完成之后挂起不结束,卡在这个地方。 当 process.env.NODE_ENVproduction 的时候便能正常退出。 具体错误原因没法定位了。

airyland commented 7 years ago

非 production 环境 duplicate-stye 会执行不会提示执行结果而已。至于不退出的问题我看下怎么解决。

wensonsmith commented 7 years ago

原来是这样,我还以为没执行呢。

我把 require('./libs/report')给注释掉,就正常的结束退出了。 不知道我是不是个例。

辛苦大大~~ 如果你没法重现我在提供我的环境吧。正在加班。。。。

airyland commented 7 years ago

如果给个选项如何,配置用以 build 的环境列表,这样程序就能准确判断了

options: {
  buildEnvs: ['localbuild', 'production']
}
airyland commented 7 years ago

已经在 1.0.62 里支持了 buildEnvs。 如果 css 没有抽离到文件,一般是因为 vue-loader.conf.js 配置,要修改一下 isProduction 逻辑

var isProduction = process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'customEnv'