Как импортировать другие файлы, кроме `main`, сгенерированных целевым webpack в nodejs?

#node.js #webpack

#node.js #webpack

Вопрос:

Я работаю над библиотекой javascript, созданной webpack . Проект будет создан для двух целевых программ, web и node . Я следовал инструкциям по этой ссылке:https://webpack.js.org/concepts/targets / для настройки нескольких целевых объектов в webpack. Это работает нормально и генерирует два целевых файла build/test-web.js и build/test-node.js .

Файл build/test-web.js указан в атрибуте main в package.json, как показано ниже:

 "name": "@my-org/test
"main": "build/test-web.js",
  

итак, я могу импортировать этот файл с помощью require('@my-org/test') . Интересно, как я могу импортировать другой файл build/test-node.js . Я знаю, что могу импортировать его через require('@my-org/test/build/test-node.js') , но я ищу лучшее решение, чтобы разработчикам было проще импортировать его.

Я проверил эту библиотеку: https://github.com/patrickhulce/generate-export-aliases но это не работает для scoped package name .

Ответ №1:

Есть отличная статья доктора Акселя Раушмайера о настройке многоплатформенных пакетов npm, в которой объясняется, как вы можете достичь желаемого.

Node.js для разрешения модуля будет просмотрено только main поле package.json , поэтому вы должны указать туда путь к build/test-node.j . Разработчики, которые объединяют код браузера (т.Е. Webpack, Rollup), сначала дополнительно проверят browser поле (if target: web ), где вы должны указать путь к своему build/test-web.j . Итак, ваш package.json должен выглядеть следующим образом:

 {
    ...
    "main": "build/test-node.j",
    "browser": "build/test-web.j",
    ...
}