Как изменить среду списка браузеров между вызовами babel.transformSync - PullRequest
0 голосов
/ 08 июня 2019

Я использую babel и preset-env для переноса JavaScript в две разные целевые среды, указанные в моем файле .browserslistrc.

Если я установлю первое окружение (установив process.env.BROWSERSLIST_ENV), а затем запустлю babel.transformSync, тогда все будет работать как положено.

Но когда я позже в коде устанавливаю process.env.BROWSERSLIST_ENV в следующую среду и запускаю babel.transformSync, он все равно работает в предыдущей среде.

Мой .browserslistrc выглядит следующим образом:

[legacy]
ie 11

[modern]
last 2 firefox versions

Сценарий выглядит следующим образом:

process.env.BROWSERSLIST_CONFIG = '.browserslistrc';

const options = {"presets": ["@babel/preset-env"]};
const source = 'const b = 3;';
let babel = require('@babel/core');

process.env.BROWSERSLIST_ENV = 'modern';
let result1 = babel.transformSync(source, options);

process.env.BROWSERSLIST_ENV = 'legacy';
let result2 = babel.transformSync(source, options);

console.log(result1.code);
console.log('-----');
console.log(result2.code);

Запуск этих выходных данных:

"use strict";

const b = 3;
-----
"use strict";

const b = 3;

Обратите внимание на один и тот же (современный) выход дважды.Первый из них правильный, второй - нет.

Если я изменю порядок, в котором я установлю среды, т.е.1022 *

Все еще один и тот же выход дважды.На этот раз это наследие.Первый - правильный, второй - нет.

Таким образом, настройка среды работает, но ее сброс не выполняется.

Я попытался сбросить ссылки на babel и удалить все ссылки, для которых он установлен.в require.cache .Затем я запускаю сборщик мусора (запустив узел с флагом --expose-gc).Прежде чем потребовать это снова, но это не имело значения.У меня нет идей, чтобы попробовать, поэтому любые предложения приветствуются.

...