Как запускать тесты hapi-lab из gulp, написанные с использованием синтаксиса es6

#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. Но это может привести к будущим проблемам. У кого-нибудь есть что-нибудь получше?