Как обеспечить зависимость пользовательских утилит от сценария ES6 для обоих браузеров / узлов - PullRequest
0 голосов
/ 26 сентября 2018

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

Мои цели:

  • заставить его работать как для браузера , так и узла окружения.
  • облегчают изменение сценария 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 с помощью указанного пользователем сценария?

...