Должны ли свойства main, module, browser для package.json указывать на minined или source? - PullRequest
0 голосов
/ 05 октября 2018

Для библиотеки JS, которая публикуется в структуре, подобной ...

my-package\
  dist\
    my-package.cjs.js
    my-package.cjs.min.js
    my-package.cjs.min.js.map
    my-package.esm.js
    my-package.esm.min.js
    my-package.esm.min.js.map
    my-package.umd.js
    my-package.umd.min.js
    my-package.umd.min.js.map
  package.json

Например, созданной для пакетов CJS, ESM и UMD, каждый из которых имеет файл "source", minified и map.

package.json

{ // ...
  "main": "dist/my-package.cjs.js",
  "module": "dist/my-package.esm.js",
  "browser": "dist/my-package.umd.js"
}

Я предполагаю, что эти свойства должны указывать на файл «source» и инструменты, используемые для объединения моей библиотеки (например, Webpack) ввнешний проект достаточно умен, чтобы выбрать минимизированный файл, если сборка не в режиме отладки / разработки.

Или я ошибаюсь, и эти свойства должны указывать на минимизированный файл?

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, что вы правы.Если вы выпускаете только, например, ESM и UMD, вы можете придерживаться

{ // ...
  "main": "dist/my-package.umd.js",
  "module": "dist/my-package.esm.js"
}

. Самое главное, что, используя " module ", вы можете предоставить версиювашего пакета, который эффективно используется приложением, скомпилированным через Webpack или Rollup.В этом случае может применяться встряхивание дерева, поэтому весь мертвый код не включается в окончательный комплект.

Это полезно, например, для библиотеки компонентов React.Вы можете экспортировать его таким образом, чтобы приложения, использующие его, получали код только для используемых компонентов.

Здесь уже был дан ответ:

Что такое пакет "module"Поле .json для?

...