2017-01-02 53 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

這兩個導入是相同的。看起來像他們中的一個是錯的;-) –

相關問題