2017-01-02 5 views
12

vue.jsフロントエンドに対して、以下の非常に単純なWeb Pack設定を実行します。 bundle.jsはコンパイルされますが、「開発モードでVueを実行しています」という警告が生成されます。私はhereのアドバイスに従っていますが、何も変わりません。WebpackがNODE_ENV = productionを使用してvueをコンパイルすると、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.common.jsファイルのvue.jsファイルを使用しています。

直接使用するには、devにはvue.js、プロダクトにはvue.min.jsを使用する必要があります。これらのファイルの両方は、それぞれ「開発」および「制作」としてハードコードされた環境を持っています。

WebPackの場合、process.env.NODE_ENV変数を処理するため、代わりにvue.common.jsファイルを使用する必要があります。このために、Webpackファイルにエイリアス属性を追加します。

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

あなたは正しくありがとうございます。私の答えを更新しました。ハードコードに意味があるのはなぜか分かりませんが、確かに理由はあります。 – rix

+0

誰かがノードなしで、またはWebPack/Browserifyなしでライブラリを使用できるためです。例えば、誰かがCDNを介してJS libをインクルードすれば、NODE_ENV変数が壊れてしまいます。 –

+1

ありがとうございます。これはうまくいった。 – CodeHacker

1

あなたはOSX(Unixの)を使用している場合は|| Linuxの

export NODE_ENV=production 

Windowsユーザーが

set NODE_ENV=production 

を使用してNODE_ENVを設定する必要があり、あなたがあなたのNODE_ENVのVARを設定しますか?それを確認してください。

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

の代わりに::

echo $NODE_ENV 
6

問題は私がやっていただった

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

違いなどの警告が取り除かれません理由であるdevのようにハードコードされた最初であります。

+1

これらの2つのインポートは同じです。そのうちの1つが間違っているように見えます;-) –

関連する問題