Мне нужен публичный скрипт для поддержки многих браузеров и скрипт админ-панели для поддержки только последней версии Chrome.Я хочу добиться этого, используя различные настройки браузеров в зависимости от записи.
babel
поддерживает несколько конфигураций для одного каталога (рекурсивно до этого находит файл конфигурации babel
до package.json
найдено:
Babel загружает файлы .babelrc (и .babelrc.js / package.json # babel) путем поиска в структуре каталогов, начиная с компилируемого «имени файла» (ограниченного приведенными ниже предостережениями)Это может быть полезно, поскольку позволяет создавать независимые конфигурации для подразделов пакета. Источник: babel
документы
В настоящее время вы разместили конфигурацию babel
в конфигурации вашего веб-пакета, которая применяется для всего проекта. Что вы можете сделать, это удалить конфигурацию babel
из вашего веб-пакета, поместить ваши adminPanel.js
и public.js
в отдельные каталоги, каждый из которых имеет свой собственный .babelrc
(или другую конфигурацию babel)файл с разными целями для @babel/presets-env
.
.
├── src
| ├── admin
| | ├── adminPanel.js
| | ├── .babelrc
| |
| ├── public
| | ├── public.js
| | ├── .babelrc
|
├── package.json
Ваш ./src/admin/.babelrc
может выглядеть так:
{
"presets": [["@babel/preset-env", {
"targets": "chrome 70"
}]]
}
И ваш./src/public/.babelrc
:
{
"presets": [["@babel/preset-env", {
"targets": "last 5 years"
}]]
}
Я только что попробовал это со следующим кодом в ./src/admin/adminPanel.js
и ./src/public/public.js
[1, 2, 3].map(num => `number ${num}`)
let [x, y, z] = [2, 4, 6]
, которые webpack
и babel
имеютпреобразован в
// ./dist/admin.js
[1, 2, 3].map(num => `number ${num}`);
let [x, y, z] = [2, 4, 6];
и
// ./dist/public.js
[1, 2, 3].map(function (num) {
return "number ".concat(num);
});
var x = 2,
y = 4,
z = 6;
Надеюсь, это поможет.