У меня есть пакет NPM (приватный), который работает как в браузере, так и в среде Node.
Это делается путем создания отдельных пакетов через Rollup для ES и CJS, поэтому вывод выглядит следующим образом:
dist/ejs/index.js // Import this for your browswer environments
dist/cjs/index.js // Use this for Node environments
Довольно стандартно. Теперь я добавляю к этому зависимость, которая следует той же схеме связывания.
Я могу импортировать библиотеку следующим образом:
import { externalLibrary } from "@external/ejs/externalLibrary";
Все хорошо в среде браузера. Но теперь это не работает в среде Node, поскольку я импортирую не CJS.
Я мог бы изменить способ импорта библиотеки в require
и нацелить на пакет cjs
:
const { externalLibrary } = require("@external/cjs/externalLibrary");
И хотя это работает в обеих средах, я не думаю, что это оптимально.
Есть ли лучший способ сделать это? Некоторая конфигурация, которую я мог бы указать при экспорте пакета CJS?
module.exports = {
input: 'src/main.js',
output: {
file: 'bundle.js',
format: 'cjs'
// Behaviour here for @external/cjs/externalLibrary ?
}
};