2016-08-21 7 views
7

は私が2つの関連の問題を得た私はbundle.jsファイルが縮小されていないnpm run buildを実行しますが、私は取得bundle.js.mapを行うときファイル。のWebPACK 2:</p> <p>まず:UglifyJs予期しない文字「`」から./public/bundle.jsでERRORは

第二:私はwebpack -dを実行したときに私だけ縮小さbundle.jsファイル(およびエラーなし)を取得するが、私は、その後webpack -pを実行したとき、私は縮小さないbundle.js.mapあるbundle.js取得し、それらのエラー:

ERROR in ./public/bundle.js from UglifyJs 
Unexpected character '`' [./app/config.js:5,0][./public/bundle.js:76,14] 

ERROR in ./public/bundle.js from UglifyJs 
Unexpected character '`' [./app/config.js:5,0][./public/bundle.js:76,14] 

私の質問(複数可):

  1. webpack -pwebpack -dの行動がすべきではありません10反対?
  2. npm run buildを実行したときにbundle.jsが縮小されないのはなぜですか?
  3. モジュールでテンプレート文字列を使用すると、これらのエラーが発生するのはなぜですか?Unexpected characterwebpack.config.jsはそのようなものである一方、

    { 
        ..., 
        "scripts": { 
        "build": "webpack --progress --watch" 
        }, 
        "devDependencies": { 
        "babel-core": "^6.13.2", 
        "babel-loader": "^6.2.5", 
        "babel-preset-es2015-native-modules": "^6.9.4", 
        "eslint": "^3.3.1", 
        "eslint-config-airbnb": "^10.0.1", 
        "eslint-plugin-html": "^1.5.2", 
        "eslint-plugin-import": "^1.13.0", 
        "eslint-plugin-jsx-a11y": "^2.1.0", 
        "eslint-plugin-react": "^6.1.2", 
        "webpack": "^2.1.0-beta.21" 
        } 
    } 
    

package.jsonはそのように見えます

const webpack = require('webpack'); // eslint-disable-line import/no-extraneous-dependencies 

const nodeEnv = process.env.NODE_ENV || 'production'; 

module.exports = { 
    entry: { 
    filename: './app/app.js' 
    }, 
    output: { 
    filename: './public/bundle.js' 
    }, 
    modules: { 
    loaders: [ 
     { 
     test: /\.js?$/, 
     exclude: /node_modules/, 
     loader: 'babel', 
     query: { 
      presets: ['es2015-native-modules'] 
     } 
     } 
    ] 
    }, 
    devtool: 'source-map', 
    plugins: [ 
    // uglify 
    new webpack.optimize.UglifyJsPlugin({ 
     compress: { warnings: false }, 
     output: { comments: false }, 
     sourceMap: true 
    }), 
    new webpack.DefinePlugin({ 
     'process.env': { NODE_ENV: JSON.stringify(nodeEnv) } 
    }) 
    ] 
}; 

私は(...とWebPACKのドキュメント)の両方こことGoogleで検索しましたが、私は見つけることができません私にとって有用な何か。ありがとう!!

答えて

4

UglifyJS2にはまだES6/Harmonyがリリースされていません。しかし、Harmonyブランチがあるので、ES6の構文でファイルを縮小/醜くすることができます。

すべてのES6からES5に移行するのに費やす時間を減らすのに役立つ代替ソリューションをお勧めします。

あなたのpackage.jsonでUglifyJsを指定し、npmが依存関係を処理するようにします。 "uglify-js": "git://github.com/mishoo/UglifyJS2#harmony-v2.8.22",

+0

注:ノードのモジュール解決アルゴリズムを使用すると、uglifyharmonyブランチのdevデプスをデベロッパーdepsに追加できます。重複が本当に心配な場合は、 '' 'のようなものでセカンダリの削除をスクリプトすることもできます。find node_modules/webpack -name" uglify * "| xargs rm -Rf''' - 管理するフォーク数が少なくなります;) – ShortCircuit

+0

私は、すべてのwebpackをフォークすることは信頼できる解決策ではないことに同意します。しかし、npm解決アルゴリズムは、npmバージョンに応じて異なる動作をする可能性があります。一方、bebrawはwebpackから分離されたUglifyJsを使用/設定できるように[uglifyjs-webpack-plugin](https://github.com/webpack-contrib/uglifyjs-webpack-plugin)プラグインを公開しました。 –

関連する問題