у меня есть этот модуль
import * as cborg from 'cborg'
import { CID } from 'multiformats/cid'
function cidEncoder (obj) {
}
....
когда я создаю модуль с этой командной строкой
"bundle": "./node_modules/.bin/esbuild ./dist/index.mjs --bundle --outfile=./dist/out.mjs",
У меня есть пакет без экспорта по умолчанию
когда я создаю модуль с этой командной строкой
"build": "./node_modules/.bin/esbuild ./src/index.js --target=es2020 --outfile=./dist/index.mjs",
Этот импорт не включен в модуль
import * as cborg from 'cborg'
import { CID } from 'multiformats/cid'
Как я могу создать модуль, включив все модули в один файл?
🤔 А знаете ли вы, что...
JavaScript поддерживает модульную структуру, что способствует организации кода на больших проектах.
Похоже, вы не указали platform
, поэтому по умолчанию будет браузер, и, согласно esbuild docs, вывод format
(который вы также не указали) по умолчанию будет iife:
Когда в качестве платформы выбран браузер (значение по умолчанию):
- Когда объединение включено, формат вывода по умолчанию устанавливается на iife, который заключает сгенерированный код JavaScript в немедленно вызываемое функциональное выражение, чтобы предотвратить утечку переменных в глобальную область.
Итак, учитывая, что вы пытаетесь сгенерировать модуль ESM (т.е. на основе расширения *.mjs
в выходном файле сборки), вам понадобится выходной формат esm, который используется по умолчанию при указании нейтрального platform
:
"bundle": "esbuild ./src/index.js --bundle --platform=neutral --outfile=./dist/out.mjs",
Вам также нужно будет добавить экспорт по умолчанию в ваш файл index.js
:
import * as cborg from 'cborg'
import { CID } from 'multiformats/cid'
export default function cidEncoder (obj) {
...
}
Надеюсь, это поможет.