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