Как заставить babel / зарегистрироваться влиять на импортируемые файлы? - PullRequest
0 голосов
/ 06 ноября 2018

Ниже 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.js в этом примере), который также содержит import или export ключевые слова, произойдет ошибка SyntaxError: Unexpected token export.

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

import ConfigHelper from 'my-config-helper';

узел-модули / мой-конфиг-хелперы / index.js

require('@babel/register');

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

Похоже, require('@babel/register'); затрагивает только один файл, но не включает в себя. Хорошо, что мне делать? Просто установите babel-core и babel-register в my-config-helper недостаточно.

1 Ответ

0 голосов
/ 07 ноября 2018

Вам нужно переместить синтаксис 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');
  }
}
...