クラスを使用して新しい JavaScript を作成しようとしていますが、uglifyjs2 でコードを縮小しようとすると、「'予期しないトークン: 名前 (Utils)'」エラーが発生します。
これが私のクラスです
'use strict';
class Utils {
// Constructor
constructor() {
marvin.Utils = Utils;
}
// Build a Form
buildForm(keys) {
var args = Array.prototype.slice.call(arguments, 1);
var form = {};
keys.forEach(function(index,key) {
form[key] = args[index];
});
return form;
}
// Unique values
unique(data) {
return new Set(data);
}
}
uglifyjsで縮小しようとすると、次のエラーが発生します
'予期しないトークン: name (Utils)',
これは、最初の行「class Utils {」のUに対応します。
uglifyjs2 が新しい ES6 標準を縮小する際にいくつかの問題があるように見えますが、それが問題なのか、それとも構文が欠けているだけなのかはわかりません。uglifyjs2 と grunt-contrib-uglify を試しましたが、同じエラーが発生します。
それがES6の問題である場合、新しいJSクラスを適切に縮小する方法について利用可能な解決策を知っている人はいますか? grunt で Babel (grunt-babel) を使用してコードを ES6 から ES5 にトランスパイルしようとしましたが、実際にはコード構造はまったく変更されませんでした。ES5のクラスの同等の形式は何ですか? これは私のトランスパイル後のコードです。
アップデート
Ok。そのため、正しい Babel プリセットとプラグインがインストールされておらず、Gruntfile にロードされていませんでした。だから私はそれらをインストールしましたが、まだ機能していません。Babel の実行中にエラーが発生する
「babel」タスクの実行
Running "babel:dist" (babel) task
Verifying property babel.dist exists in config...OK
Files: js/es6/utils.js -> js/es6/utils.new.js
Options: sourceRoot="etc/", sourceMap=false, presets=["babel-preset-es2015"], plugins=["babel-plugin-transform-es2015-classes"]
Warning: Unknown plugin "babel-plugin-transform-es2015-classes" specified in "base" at 0, attempted to resolve relative to "js/es6" Use --force to continue.
これが私のGruntfile構成です。node_modules と gruntfile は、アプリケーションのソース ファイルとは別の場所にあります。
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// Babel - transpiler from ES6 to ES5
babel: {
options: {
sourceRoot: 'etc/',
sourceMap: false,
presets: ['babel-preset-es2015'],
plugins: ["babel-plugin-transform-es2015-classes"]
},
dist: {
files: [{
expand: true,
src: ['js/es6/*.js'],
ext: '.new.js'
}]
}
}
});
// Set default file path
grunt.file.setBase('../python/marvin/web/static/');
私のアプリケーション ツリーは次のようになり、etc/ ディレクトリ内で grunt を実行しています。私のすべての JavaScript ファイルは、何レベルも下の js サブディレクトリ内にあります。
- トランク/
- 等/
- node_modules/
- Gruntfile.js
- パッケージ.json
- パイソン/
- マーヴィン/
- ウェブ/
- 静的/
- js/
- es6/
- ユーティリティ.js
- es6/
- css/
- js/
- 静的/
- ウェブ/
- マーヴィン/
- 等/
プリセット/プラグインが 1 つのディレクトリにあり、javascript ファイルが別のディレクトリにあることを babel 構成に伝えるにはどうすればよいですか?