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



下面的gulpfile.babel.js通过babel-node gulpfile.babel.js运行而没有错误(我知道要执行gull任务,我应该运行gulp taskname,但babel-node gulpfile.babel.js用于调试而不运行任务(。

require('@babel/register');
import gulp from 'gulp';
gulp.task('default', done => {
console.log('No problem!');
done();
});

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

require('@babel/register');
import gulp from 'gulp';
import ConfigHelper from 'my-config-helper';

节点模块/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');
}
}

最新更新