53

私は "use strict" の関数形式を使用していますが、変換後に Babel が追加するグローバル形式は必要ありません。問題は、「use strict」モードを使用していないいくつかのライブラリを使用していて、スクリプトが連結された後にエラーがスローされる可能性があることです

4

16 に答える 16

5

バベル 6 + es2015

babel-plugin-transform-es2015-modules-commonjsrequireを無効にすることができますbabel-plugin-transform-strict-mode

したがって、次のコードのnode_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js151 行にコメントしてください

//inherits: require("babel-plugin-transform-strict-mode"),
于 2016-05-11T14:52:40.343 に答える
4

個人的には、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"))
});

于 2016-02-28T02:00:31.400 に答える
4

.babelrcソリューションを変更するだけ

npmモジュールを変更したくない場合は、.babelrcこのようにignoreを使用できます

{
  "presets": ["es2015"],
  "ignore": [
    "./src/js/directive/datePicker.js"
  ]
}

そのファイルを無視してください、それは私のために働きます!

使用できない無視されたファイル'use strict'古いコードであり、babel を使用して変換する必要はありません。

于 2016-07-13T01:15:31.250 に答える
2

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

于 2016-10-13T10:59:14.440 に答える
1

これは文法的に正しくありませんが、別のモジュールを削除するモジュールをインストールしなくても、基本的に Babel 5 と 6 の両方で機能します。

code.replace(/^"use strict";$/, '')
于 2016-07-20T18:43:13.500 に答える
0

ノードで実行され、「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

于 2018-08-01T18:39:53.187 に答える