Я использую 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).Прежде чем потребовать это снова, но это не имело значения.У меня нет идей, чтобы попробовать, поэтому любые предложения приветствуются.