如何使 babel/register 影响导入的文件?

How to make babel/register affect on imported files?

低于 gulpfile.babel.js 运行s 没有错误 babel-node gulpfile.babel.js (我知道要执行 gulp 任务我应该 运行 gulp taskname,但 babel-node gulpfile.babel.js 用于在没有 运行ning 任务的情况下进行调试。

require('@babel/register');
import gulp from 'gulp';

gulp.task('default', done => {
  console.log('No problem!');
  done();
});

如果包含文件(本例中的node-modules/my-config-helper/index.js)也包含importexport关键字,将出现错误SyntaxError: Unexpected token export

require('@babel/register');
import gulp from 'gulp';

import ConfigHelper from 'my-config-helper';

node-modules/my-config-helper/index.js

require('@babel/register');

export default class ConfigHelper {
  constructor() {
    console.log('ConfigHelper: done');
  }
}

看起来 require('@babel/register'); 只影响单个文件但不包含。好的,我该怎么办?在my-config-helper中安装babel-corebabel-register是不够的。

您需要将 ES 语法移动到另一个文件中,并从您的 index.js:

中获取该文件
// index.js
require('@babel/register');
require("./gulp-stuff"); <-- from this point on - all ES code will be transpiled

// gulp-stuff.js
import gulp from 'gulp';
import ConfigHelper from './my-config-helper';
// ....


// my-config-helper.js
export default class ConfigHelper {
  constructor() {
    console.log('ConfigHelper: done');
  }
}