Как я могу применить конфигурацию babel перед основной электронной программой. js, при использовании Spectron? - PullRequest
3 голосов
/ 13 марта 2020

Я использую jest для запуска тестового скрипта, который запускает приложение Electron с использованием Spectron. Как правильно загрузить мою конфигурацию Babel? Обычно я запускаю приложение так: npx electron -r @babel/register . (npm запуск в пакете. json)

Мой тестовый скрипт с использованием Spectron пытается инициализировать его следующим образом:

import { Application } from 'spectron';
const app = new Application({
  path: 'node_modules/electron/dist/electron',
  args: ["-r @babel/register", "src/main.js"],
  chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
  chromeDriverLogPath: 'chromeDriver.log'
})

Но main.js вылетает с синтаксической ошибкой в ​​первом операторе импорта. Ясно, что -r @babel/register не загружается.

Если я создаю команду из этих же path и args вручную на терминале:

node_modules/electron/dist/electron -r @babel/register src/main.js

приложение запускается просто отлично. Но, глядя на журнал chromeDriver, я вижу, что эта команда, вероятно, не идентична той, что на самом деле называется. Из журнала:

"chromeOptions": {
         "args": [ "spectron-path=node_modules/electron/dist/electron", "spectron-arg0=-r @babel/register", "spectron-arg1=src/main.js", "--disable-dev-shm-usage", "--headless" ]

Мой хакерский обходной путь сейчас заключается в создании specmain.js сценария со следующим:

"use strict";
require("@babel/register");
require("./main")

И затем мой тестовый сценарий успешно запускает приложение, теперь использование:

const app = new Application({
  path: 'node_modules/electron/dist/electron',
  args: ["src/specmain.js"],
  chromeDriverArgs: ['--disable-dev-shm-usage', '--headless'],
  chromeDriverLogPath: 'chromeDriver.log'
})

Какой хороший подход для требования @babel/register перед main.js в контексте Spectron?

...