2015-06-30 3 views
4

Я разрабатываю два пакета узлов, зарегистрированных с номером npm, и используя синтаксис es6. Каждый пакет имеет только один модуль es6, экспортирующий один класс.Освобождение источников es6 и es5 с npm

  • пакет A не имеет зависимостей
  • пакет B зависит от A

класса А

export default class A {...} 

Класс B

import A from 'A' 

export default class B {...} 

Каждый пакет имеет следующую структуру modules/ index.js (es6 source) index.js (commonjs source)

  • Исходный код находится в es6/index.js
  • Он transpiled к ES5/CommonJS с помощью Бабеля

Вопрос

I хочу предоставить пользователям мою A и B-упаковку ges выбор для использования es6 (путем импорта класса B, который сам будет импортировать A es6 class, а не es5 A) или источники es5 (требуя функцию es5, которая сама требует функции es5 A): Каков наилучший способ ее достижения?

+0

Что именно вы неясны? Как должна выглядеть инструкция импорта для B? – nils

+0

Нет. Я хочу, чтобы es6 B импортировал es6 A и перетащил es5 B, чтобы потребовать transpiled es5 A. Я ищу общие рекомендации о том, как структурировать и освобождать мой код. Я нашел решение, которое я расскажу: используя опцию 'resolveModuleSource' в Babel. Но я хотел бы знать, что делают другие. –

+1

Возможно, вас заинтересует https://github.com/rollup/rollup/wiki/jsnext:main – Bergi

ответ

1

Что бы я сделал, чтобы иметь две отдельные выпуски (два отдельных GitHub проектов)

  1. One, который ES5 в качестве минимального требования (с ES5 А и ES5 В качестве transpiled кода).
  2. Другой, который имеет минимальное требование es6 (с модулями es6 A и es6B).

Причина в том, что в настоящее время лучше всего избегать путать людей, которые еще не сделали переход на es6 с файлами es6. В будущем, через год или два, версия es5 станет ненужной. Вы хотите иметь возможность прекратить поддержку версии es5 без существенного изменения организации файлов.

В выпуске es6 рассмотрите возможность именования ваших файлов index.es6.js. Это поможет предотвратить случайную ссылку на код es6 в среде, для которой нет поддержки.

Смежные вопросы