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