下面的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();
});
如果包含同样包含import
或export
关键字的文件(本例中为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-core
和babel-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');
}
}