2017-01-02 52 views
12

我对vue.js前端运行了一个非常简单的web pack配置。 bundle.js已编译,但仍产生'您正在开发模式中运行Vue'警告。我遵循了指定here的建议,但它没有改变任何东西。Webpack编译vue与NODE_ENV =生产仍然会导致dev警告

任何想法是怎么回事?

这是我webpack.config.js:

var webpack = require('webpack') 

module.exports = { 
entry: './www/src/js/main.js', 
output: { 
    path: "./www/static/js", 
    filename: "bundle.js" 
}, 
plugins: [ 
    new webpack.DefinePlugin({ 
    'process.env': { 
     NODE_ENV: '"production"' 
    } 
}), 
new webpack.optimize.UglifyJsPlugin({ 
    compress: { 
     warnings: false 
    } 
}) 
], 
module: { 
    loaders: [ 
    { 
     test: /\.js$/, 
     loader: 'babel', 
     exclude: /node_modules/ 
    }, 
    { 
     test: /\.vue$/, 
     loader: 'vue' 
    } 
    ] 
}, 
vue: { 
    loaders: { 
    js: 'babel' 
    } 
} 
} 

回答

21

你正在使用哪个版本的Vue?如果是Vue公司2.1.0或更高,检查这个答案:

也许您正在使用的vue.js文件,而不是vue.common.js文件。

对于直接使用,您应该使用dev的vue.js和生产的vue.min.js。这两个文件都分别将环境硬编码为“开发”和“生产”。

对于WebPack,您应该使用vue.common.js文件,因为它将处理process.env.NODE_ENV变量。为此,请将alias属性添加到您的webpack文件中:

module.exports = { 
    ... 
    resolve: { 
    alias: { 
     'vue$': 'vue/dist/vue.common.js' 
    } 
    }, 
    ... 
} 
+0

你是对的谢谢。已经更新了我的答案。不知道为什么硬编码有意义,但确定有一个很好的理由。 – rix

+0

因为有人可以在没有Node或没有WebPack/Browserify的情况下使用该库。例如,有人可以通过CDN包含JS库,然后NODE_ENV变量将被打破。 –

+1

谢谢你。这工作。 – CodeHacker

1

如果您正在使用OSX(UNIX)|| Linux的

export NODE_ENV=production 

Windows用户应使用

set NODE_ENV=production 

您务必将您NODE_ENV VAR设置NODE_ENV?检查它。

echo $NODE_ENV 
6

问题是我在做什么:

import Vue from 'vue/dist/vue.js' 

相反的:

import Vue from 'vue/dist/vue.common.js' 

的区别在于第一是硬编码到dev这就是为什么警告等没有得到剥离出来。

+1

这两个导入是相同的。看起来像他们中的一个是错的;-) –

相关问题