Как распространять пакет es6 с субмодулями - PullRequest
2 голосов
/ 22 марта 2020

Я пытаюсь опубликовать sh пакет на npm. Я не уверен, как сформулировать то, что я пытаюсь сделать .. может упаковывать «подмодули»?

Сокращенная структура каталогов:

- package.json
- src/
  - a.js
  - b.js
- dist/
  - a.js
  - b.js

Мой скрипт сборки использует Babel для переносить в каталог dist с теми же модулями, что и в src/. Я бы хотел, чтобы потребители импортировали функции из модуля a.js следующим образом:

import {foo} from "mypackage/a";

, а не

import {foo} from "mypackage/dist/a";

Если я добавлю index.js к mypackage/ и экспортирую a Я могу сделать

import {a} from "mypackage"

, но это не то, что я хочу ...

Какой стандартный способ публикации пакетов sh, так что «подмодули» можно импортировать следующим образом или может кто-нибудь указать мне на репо, который делает такие вещи?

1 Ответ

1 голос
/ 23 марта 2020

Если я понимаю, вы должны выбрать два варианта.

Сначала позвольте мне объяснить, как подмодули Node с sla sh обрабатываются Node. Когда вы импортируете модуль с sla sh, Node попытается найти в папке root файл с именем, которое указано после sla sh. В вашем случае это будет a.js. Если ничего не найдено, Node попытается найти каталог с именем a, содержащий файл index.js. Если файл не найден, ничего не импортировано.

Итак, вернемся к вашей проблеме, вы можете создать файл a.js в папке root, содержащей следующий экспорт:

export * from './dist/a';
// The traditional export should look like this, in case I have wrong ES6 export
module.exports = require('./dist/a')

или немного измените структуру вашего проекта, чтобы файлы a и b находились в своих каталогах c.

Например:

- package.json
- src/
  - a.js
  - b.js
- a/
  - index.js
- b/
  - index.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...