2017-08-24 15 views
2

webpackを使用して、ES6で書かれたモジュールをバンドルします。 json-immutableプラグインを追加するまでは、すべて動作しています。そこに必要なことはjson-stream-stringifyで、クラスがあります:webpack 2 uglifyプラグインES6

class JSONStreamify extends CoStream {...} 
module.exports = function(obj, replacer) { 
    return new JSONStreamify(obj, replacer); 
}; 

WebPACKのは、良い作品が、私はここにモジュールhttps://github.com/webpack-contrib/uglifyjs-webpack-pluginについての情報を見つけUglifyスローエラー

Unexpected token: name (JSONStreamify)

ので、ファイルをmonifyありません。私はecmaのサポートをインストールして追加しましたが、私は同じエラーがあります。私はトライを削除しましたが、除外node_modulesを追加しようとしましたが、結果はありません。

私webpack.config.jsは

const path = require('path'); 
const webpack = require('webpack'); 
const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); 
module.exports = { 
    entry: { 
    backend: './src/backend.js', 
    frontend: './src/frontend.js', 
    }, 
    output: { 
    path: path.resolve(__dirname,'./dist'), 
    filename: '[name].sakui.min.js' 
    }, 
    externals: { 
    'jQuery':'jQuery', 
    'Foundation':'Foundation', 
    'react': 'React', 
    'react-dom': 'ReactDOM', 
    'redux': 'Redux', 
    'react-redux': 'ReactRedux', 
    'immutable': 'Immutable', 
    'lodash': '_', 
    '_': '_' 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     use: { 
      loader: 'babel-loader', 
      options: { 
      "only": "src/**", 
      "presets": [ 
       "env", 
       "react", 
       "es2017", 
       "stage-3" 
      ], 
      "plugins": [["transform-class-properties", { "spec": true }],"transform-decorators-legacy","minify-simplify"], 
      "babelrc": false 
      } 
     } 
     } 
    ] 
    }, 
    plugins: [ 
    new UglifyJSPlugin({ 
     ecma: 6 
    }) 
    ] 
} 

私はこの問題を解決することができますどのように任意のヒントですか?ウェブパック後にファイルを縮小するための外部ツールはありますか?

+1

UglifyはES6を非常にうまく理解していません。あなたには2つのオプションがあり、ES5&Uglifyに移行するか、Uglifyを使用せず、Babel独自のUglifyerを使用します。 (Babili) – Keith

+0

webpackオプションを追加してES5 only node_modulesにトランスクリアすることはできますか? (babiliがうまくいくかチェックします) – jaroApp

+0

私はwebpackファイルからuglifyプラグインを削除しますが、まだこのエラーがあります。 キャッシュをクリアする必要がありますか?私はそれが正しいwebpack.configファイルを使用して参照してください – jaroApp

答えて

0

ソリューション:私が見つけたもの

一つの方法は、ES5にバベルによってnode_modulesでtranspileすべてであり、それは動作します。

私webpack.config.js

const path = require('path'); 
const webpack = require('webpack'); 
const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); 
module.exports = { 
    entry: { 
    backend: './src/backend.js', 
    frontend: './src/frontend.js', 
    }, 
    output: { 
    path: path.resolve(__dirname,'./dist'), 
    filename: '[name].sakui.min.js' 
    }, 
    externals: { 
    'jQuery':'jQuery', 
    'Foundation':'Foundation', 
    'react': 'React', 
    'react-dom': 'ReactDOM', 
    'redux': 'Redux', 
    'react-redux': 'ReactRedux', 
    'immutable': 'Immutable', 
    'lodash': '_', 
    '_': '_' 
    }, 
    module: { 
    rules: [ 
     { 
     test: /\.js$/, 
     use: { 
      loader: 'babel-loader', 
      options: { 
      "presets": [ 
       "env", 
       "react", 
       "es2017", 
       "stage-3" 
      ], 
      "plugins": [["transform-class-properties", { "spec": true }],"transform-decorators-legacy"], 
      "babelrc": false 
      } 
     } 
     } 
    ] 
    }, 
    plugins: [ 
    new UglifyJSPlugin() 
    ] 
} 

たぶん誰かのために便利になります。

関連する問題