Я пытаюсь использовать Rollup , чтобы объединить несколько JS в один файл. Однако путь к одному из файлов, который я хотел бы import
, известен только во время компиляции, и поэтому мне нужно указать Rollup, как его найти.
Вот мой основной файл:
import * as commands from 'command-loader';
console.log(commands);
Вы можете видеть, что он импортирует все из command-loader
. Имя и содержимое файла не важны, мне просто нужно, чтобы его содержимое было включено в основной файл. Этот файл выглядит примерно так:
export function exampleCommand() {
console.log('Running command...');
}
Ошибка накопления достаточно очевидна: он не знает, как найти command-loader
: 'command-loader' is imported by ../index.js, but could not be resolved – treating it as an external dependency
.
Я знаю, что мог бы, вероятно,просто прочитайте содержимое файла команд и добавьте его к основному файлу, но это неудобно, так как мне придется удалить export
из файла команд и определить объект «команды», и это, вероятно, противоречит целиRollup.
Я пытался использовать rollup-plugin-node-resolve
, чтобы сообщить Rollup, как найти command-loader
, но, похоже, это не сработало (предоставлено, я не знаю плагин, которыйхорошо).
const rollup = require('rollup');
const resolve = require('rollup-plugin-node-resolve');
await rollup.rollup({
input: mainFilePath,
plugins: [
resolve({
'command-loader': dynamicFilePath
})
]
});
Я также пытался использовать rollup-plugin-bundle-imports
безрезультатно.
const rollup = require('rollup');
const { bundleImports } = require('rollup-plugin-bundle-imports');
await rollup.rollup({
input: mainFilePath,
plugins: [
bundleImports({
include: [dynamicFilePath],
importAs: 'command-loader',
})
]
});
Возможно, я выбрал неправильный подход. Если есть лучший способ динамически import
файла во время компиляции, я бы хотел узнать об этом.