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

时间:2018-11-06 01:16:00

标签: node.js babel babel-node babel-register

gulpfile.babel.js下的babel-node gulpfile.babel.js运行无错误(我知道要执行gulp任务,我应该运行gulp taskname,但是babel-node gulpfile.babel.js用于调试而不运行任务)

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

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

如果要包含还包含node-modules/my-config-helper/index.jsimport关键字的文件(在此示例中为export),则会发生错误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');仅影响单个文件,但不影响包含。好的,我该怎么办?只需将babel-corebabel-register安装在my-config-helper中就不够了。

1 个答案:

答案 0 :(得分:1)

您需要将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');
  }
}