私は "use strict" の関数形式を使用していますが、変換後に Babel が追加するグローバル形式は必要ありません。問題は、「use strict」モードを使用していないいくつかのライブラリを使用していて、スクリプトが連結された後にエラーがスローされる可能性があることです
16 に答える
バベル 6 + es2015
babel-plugin-transform-es2015-modules-commonjs
requireを無効にすることができますbabel-plugin-transform-strict-mode
。
したがって、次のコードのnode_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js
151 行にコメントしてください
//inherits: require("babel-plugin-transform-strict-mode"),
個人的には、gulp-iife プラグインを使用し、すべてのファイルを IIFE でラップしています。babel プラグイン (プリセット es2015 を使用) がグローバルな「use strict」も追加していることに気付きました。iife ストリーム プラグインを介してポスト バベル コードを再度実行し、バベルが行ったことを無効にします。
gulp.task("build-js-source-dev", function () {
return gulp.src(jsSourceGlob)
.pipe(iife())
.pipe(plumber())
.pipe(babel({ presets: ["es2015"] }))// compile ES6 to ES5
.pipe(plumber.stop())
.pipe(iife()) // because babel preset "es2015" adds a global "use strict"; which we dont want
.pipe(concat(jsDistFile)) // concat to single file
.pipe(gulp.dest("public_dist"))
});
.babelrc
ソリューションを変更するだけ
npmモジュールを変更したくない場合は、.babelrc
このようにignoreを使用できます
{
"presets": ["es2015"],
"ignore": [
"./src/js/directive/datePicker.js"
]
}
そのファイルを無視してください、それは私のために働きます!
使用できない無視されたファイルは'use strict'
古いコードであり、babel を使用して変換する必要はありません。
babel 6 以降、最初に babel-cli (CLI から Babel を使用する場合) または babel-core (Node API を使用する場合) をインストールできます。このパッケージにはモジュールは含まれていません。
npm install --global babel-cli
# or
npm install --save-dev babel-core
次に、必要なモジュールをインストールします。したがって、「厳密モード」のモジュールをインストールしないでください。
npm install --save-dev babel-plugin-transform-es2015-arrow-functions
インストール済みのモジュールを .babelrc ファイルに次のように追加します。
{
"plugins": ["transform-es2015-arrow-functions"]
}
詳細はこちら: https://babeljs.io/blog/2015/10/31/setting-up-babel-6
これは文法的に正しくありませんが、別のモジュールを削除するモジュールをインストールしなくても、基本的に Babel 5 と 6 の両方で機能します。
code.replace(/^"use strict";$/, '')
ノードで実行され、「use strict」を削除するスクリプトを作成しました。選択したファイルで。
ファイル: script.js:
let fs = require('fs');
let file = 'custom/path/index.js';
let data = fs.readFileSync(file, 'utf8');
let regex = new RegExp('"use\\s+strict";');
if (data.match(regex)){
let data2 = data.replace(regex, '');
fs.writeFileSync(file, data2);
console.log('use strict mode removed ...');
}
else {
console.log('use strict mode is missing .');
}
node ./script.js