#gulp #ecmascript-6 #hapijs #babeljs #lab
#gulp #ecmascript-6 #hapi.js #babeljs #лабораторная работа
Вопрос:
Я создаю начальный проект hapi api. Я решил использовать синтаксис es6 в исходном коде проекта. Я использую hapi-lab в качестве своей платформы тестирования. Он интегрирован, и я могу запустить его с помощью ‘npm test’ через ссылку в файле package.json.
"scripts": {
"test": "lab -T ./node_modules/lab-babel -I __core-js_shared__"
}
...
//from the cmd line
npm test
Это работает нормально, хотя я использую синтаксис es6 в тесте:
import Server from '../../src/server.js';
import Code from 'code';
import Lab from 'lab';
Я хочу иметь возможность запускать тесты из gulp. Я использую ‘gulp-lab’. Он запускается, но затем выдает ошибку.
SyntaxError: Unexpected reserved word
Это указывает на использование import, который я получаю как его es6. Итак, я попытался передать тестовый js через babel, прежде чем отправлять его в lab (см. Ниже). К сожалению, я получаю ту же ошибку.
Вот соответствующий раздел моего файла gulp — есть предложения?
import gulp from 'gulp';
import babel from 'gulp-babel';
import lab from 'gulp-lab';
gulp.task('test', function () {
return gulp.src('test/**/*.js')
.pipe(babel())
.pipe(lab());
});
Я могу опубликовать оставшуюся часть файла gulp, если это будет полезно, чтобы увидеть, как работает сборка.
Вот мой файл .babelrc:
//use es2015 preset to convert es6 js to es5 equivalent
{
"presets": [ "es2015" ],
'plugins': [
'transform-es2015-template-literals',
'transform-es2015-block-scoping'
]
}
Комментарии:
1. Обычно вы можете захотеть использовать инструмент сборки (Gulp) для сборки остальной части приложения. Это проблема «кто будет создавать конструктор». Самый простой способ справиться с этим — не использовать функции ES6, которые не поддерживаются Node (модули ES6) в частях, которые вы не собираетесь переносить.
2. Я все еще хочу иметь возможность использовать синтаксис es6 во всем проекте. Но теперь я вижу, в чем моя проблема. Хотя мои тесты были успешно перенесены, сами тесты импортируются src/server.js который является нетранспилированной версией кода. Возможное решение проблемы (только что попробовал, и оно работает) — указать тесты в каталоге ‘build’ или trasnpiled. Но это может привести к будущим проблемам. У кого-нибудь есть что-нибудь получше?