Учитывая пакет, опубликованный в npm с package.json
, который указывает на 3 отдельных дистрибутивных файла, и выглядит примерно так:
{
...
"name": "@myorg/mymodule",
"main": "mymodule.umd.js",
"module": "mymodule.esm.js",
"unpkg": "mymodule.min.js"
}
и использование publi c выглядит следующим образом:
import mymodule from '@myorg/mymodule'
mymodule() // ..does stuff
или при использовании обычного JS
const mymodule = require('mymodule')
mymodule.default()
Как структурировать мой пакет для публикации sh дополнительных импортов. Например, допустим, мы хотим опубликовать sh функцию или локализацию, и мы не хотим, чтобы это было частью общего набора, потому что эта функция понадобится всего нескольким людям. В идеале использование будет выглядеть следующим образом:
import mymodule from '@myorg/mymodule'
import fr from '@myorg/mymodule/fr'
mymodule({
locale: fr
})
Как я могу структурировать свой пакет, чтобы учесть это? Технически я могу выполнить этот импорт, но если я опубликую sh esm
веб-пакет или накопительный сбой (неожиданный токен «экспорт»), потому что они думают, что это будет обычная js сборка и если я опубликую sh umd
они выдают предупреждения о невозможности найти значение по умолчанию export
. Единственный эффективный способ заставить это работать - это явный импорт import fr from '@myorg/mymodule/fr.esm'
Однако, как сопровождающий пакета, я хотел бы предварительно сконфигурировать пакет для лучшей работы с пакетами вместо того, чтобы требовать пользователи должны понимать внутреннюю часть своего компоновщика или полагаться на свое дрожание дерева, чтобы уменьшить размер. Это уже отлично работает с main
, module
и unpkg
для основного файла, как я могу сделать нечто подобное для других файлов?