Как обеспечить зависимость пользовательских утилит от сценария ES6 как для браузера, так и для узла

Я пишу небольшую библиотеку в ES6.

Мои цели:

  • заставить его работать как для браузера, так и для среды Node.
  • упростить изменение сценария utils с помощью пользовательской версии

Вопрос: Что является хорошим способом предоставить пользователям возможность переопределить вспомогательную / служебную функцию?

До сих пор я думал о библиотеке, входящей в src / main.js, которая зависит от локального файла src/utils.js, который содержит вспомогательные функции:

// utils.js
import extend from 'lodash';
import isFunction from 'lodash';

import moment from 'moment';

// exporting helper object
export default {
  isFunction (value) {
      return isFunction(value);
  }
  // ... more helper functions
};

// main.js
import helper from './utils.js';
const MyLibrary = function () {
};
export default MyLibrary;

В старые времена браузера я устанавливал объект в глобальной области видимости, а затем либо расширял его, либо полностью заменял вспомогательный объект библиотеки.

Должен ли я сделать что-то вроде этого:

// Node
import MyLibrary from 'MyLibrary';
MyLibrary.setHelper(userDefinedHelperObject);

// Browser
<script src="userDefinedHelper.js"></script>
<script src="dist/MyLibrary.js"></script>

или же

<script src="dist/MyLibrary.js"></script>
<script>
    MyLibrary.setHelper(userDefinedHelperObject);
</script>

Что такое хороший подход на 2018 год для библиотек ES6? Могут ли пользователи каким-либо образом указать путь к своим собственным utils.js и разрешить компиляции / переносу webpack/rollup/etc с помощью указанного пользователем сценария?

0 ответов

Другие вопросы по тегам