gulp-babel не создает выходной файл или работает неправильно

Я работаю над библиотекой JS и я хочу преобразовать весь код javascript, написанный в ES6, в стандарт ES5, чтобы получить больше поддержки в текущих браузерах.

Дело в том, что я хочу использовать Babel с задачами Gulp, поэтому я установил все эти пакеты NPM [package.json]:

"devDependencies": {
  "@babel/core": "^7.1.2",
  "@babel/preset-env": "^7.1.0",
  "babel-cli": "^6.26.0",
  "gulp": "^3.9.1",
  "gulp-babel": "^8.0.0",
  "gulp-concat": "^2.6.1",
  "gulp-sourcemaps": "^2.6.4",
  "gulp-terser": "^1.1.5"
}

Далее мой файл .babelrc имеет следующее содержимое:

{
  "presets": ["env"]
}

И gulpfile.js записывается следующим образом:

const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');
const babel = require('gulp-babel');
const concat = require('gulp-concat');
const terser = require('gulp-terser');

gulp.task('minify', function () {
    return gulp.src('src/app/classes/*.js')
        .pipe(sourcemaps.init()) 
        .pipe(babel())     // I do not pass preset, because .babelrc do exist
        .pipe(concat('output.js'))   
        .pipe(sourcemaps.write('.'))   
        .pipe(gulp.dest('build/js'))
});

gulp.task('default', ['minify']);

Проблема в том, что когда я выполняю команду gulp в корневом каталоге проекта, она не создает выходной файл. Консоль показывает успешное выполнение, но ничего не появляется ни в каталоге build/js, ни в другом каталоге проекта.

#user1:/project-route$> gulp
    [17:36:54] Using gulpfile /project-route/gulpfile.js
    [17:36:54] Starting 'minify'...

Пробовал и без sourcemaps функций, результат тот же, ничего!!!.


person Yulio Aleman Jimenez    schedule 01.10.2018    source источник


Ответы (1)


По какой-то причине, когда я выполняю в терминале babel -V результат:

#user1:/project-route$> gulp
    6.26.0 (babel-core 6.26.3)

Это не та версия, которую я установил (которую я помню):

"@babel/core": "^7.1.2", 
"@babel/preset-env": "^7.1.0",

Итак, я удалил все эти зависимости:

"@babel/core": "^7.1.2",
"@babel/preset-env": "^7.1.0",
"gulp-babel": "^8.0.0",

И я установил эти взамен:

"babel-core": "^6.26.3",
"babel-preset-env": "^1.7.0",
"gulp-babel": "^7.0.1",

И все функции теперь работают!!!


Конечно, объяснение соответствует этой заметке в README.md плагина gulp-babel, понимание этого вопроса стоило мне много головной боли:

Руководство по установке (gulp-babel на GitHub)

Установить

Установите gulp-babel, если хотите получить предварительную версию следующей версии gulp-babel.

# Babel 7
$ npm install --save-dev gulp-babel @babel/core @babel/preset-env

# Babel 6
$ npm install --save-dev gulp-babel@7 babel-core babel-preset-env
person Yulio Aleman Jimenez    schedule 03.10.2018
comment
Эй, чувак, я знаю, что этому сообщению уже несколько месяцев, но я и, как я видел, некоторые другие люди (согласно открытой проблеме в репозитории gulp-babel github) все еще имеют эту проблему, когда он просто не транспилирует код вниз правильно. Если я хочу работать с модулями, например, и у меня есть импорт/экспорт, он просто читает импорт (я думаю) как require, а в браузере возвращает require is not defined. Я сделал то же самое, что и вы, установил версию Babel 6, все та же проблема. Не могли бы вы поделиться дополнительной информацией о том, как вы заработали? - person Petar; 28.01.2019
comment
Как вы сказали, это было несколько месяцев назад, но в основном я сделал то, что написал, конечно, прежде чем найти это решение, я пробовал много других решений во время своего исследования. - person Yulio Aleman Jimenez; 29.01.2019
comment
Итак, что я на самом деле набираю, чтобы установить рабочую версию? Ридми все еще не ясен. - person James South; 24.07.2019
comment
Это зависит от того, какую версию Babel вы используете. Выполните в терминале babel -V, а версия babel-core, которую показывает терминал, должна быть такой же, как версия babel, установленная в вашем проекте или указанная в файле package.json. Затем выполните правильную команду, чтобы установить gulp-babel в соответствии с правильной версией Babel, которая у вас есть. - person Yulio Aleman Jimenez; 21.08.2019