У меня есть ситуация, когда я объединяю несколько файлов с помощью накопительного пакета cli
. Пример этого доступен в документации.
Я экспортирую массив пакетов следующим образом:
export default [
{
input: 'packages/A/index.js',
output: {
name: '[name]Bundle',
file: '[name].umd.js',
format: 'umd'
}
},
{
input: 'packages/B/index.js',
output: {
name: '[name]Bundle',
file: '[name].umd.js',
format: 'umd'
}
}
];
И затем у меня есть функция, которая добавляет общую конфигурацию к каждому пакету (например, плагины), что-то вроде:
import path from "path";
import alias from '@rollup/plugin-alias';
import resolve from '@rollup/plugin-node-resolve';
const augment = configs => {
const generateAlias = (symbol, location) => {
return {
find: symbol,
replacement: path.resolve(process.cwd(), location)
};
}
const entries = [
generateAlias("@", "src/"),
generateAlias("~", "src/assets/scss/"),
generateAlias("#", "src/assets/img/"),
generateAlias("%", "config/"),
];
const plugins = [
alias({
entries
}),
resolve({ browser: true }),
];
return configs.map(entry => {
return {
...entry,
plugins
}
});
}
export {
augment
}
И я оборачиваю вышеупомянутый экспортированный массив в augment
например:
const bundles = [/* above example */];
export default augment(bundles);
Теперь все это работает нормально, но у меня есть два плагина, которые я на самом деле не хочу применять к каждому пакету. Я просто хочу запустить их после того, как все пакеты были собраны, эти два плагина находятся; rollup-plugin-serve и rollup-plugin-workbox теперь ни один из них на самом деле не имеет никакого отношения к каким-либо связываемым файлам, и нет смысла создавать экземпляры более одного раза.
То, что я хотел бы сделать как часть функции augment
, чтобы добавить их в конец возвращаемого массива, например:
const exportedArray = configs.map(/* function from above */);
exportedArray.push(...[
{
plugins: [
serve({
host,
port,
contentBase: 'dist/'
})
]
}
]);
return exportedArray;
И это не будет содержать input
, я попробовал вышеописанное и сваливаю жалобы, альтернативным вариантом было бы добавить эти плагины в окончательный комплект в массиве, я просто предпочитаю создавать их экземпляры без привязки к конкретному комплекту.