В определениях для плагина webpack, я пытаюсь предоставить функцию переопределения, которую мой модуль будет получать, если метод существует.
export const listFetchAPI = () => {
return ( LIST_FETCH_API ? LIST_FETCH_API : '/list/');
};
export const listFetchTX = (data) => {
return ( LIST_FETCH_TX === 'function' ? LIST_FETCH_TX(data) : data );
};
В моей конфигурации webpack, основанной на среде или реализации проекта, я могу или не хочу предоставлять переопределения для этих функций.
webpackConfig.plugins.push(
new webpack.DefinePlugin({
LIST_FETCH_API: JSON.stringify('https://testapi.com/listFetch/')
LIST_FETCH_TX(data) { return { ...data, test: 'HELLO!' }; }
})
);
Я пробовал как с обозначениями ES5, так и с ES6. Когда я строю, я получаю сообщение об ошибке SyntaxError: Unexpected identifier
Я не вижу в документах, где вы можете передать метод через DefinePlugin. https://webpack.js.org/plugins/define-plugin/
Поиск Google подходит для nill. Следующим шагом было бы передать строковое значение, а затем использовать react-json-schema
для подбора компонента. Это кажется слишком вовлеченным, поэтому я надеюсь найти способ определения методов в DefinePlugin
.
ИЗМЕНИТЬ Для пояснения, что я делаю, создается общий модуль редукции, который может быть зарегистрирован в частном реестре npm. При вызове этому модулю могут быть предоставлены переопределения для URL-адресов API-адресов и ответных переводчиков. Это мешает мне разветвлять код или создавать модули, которые на 99% похожи каждый раз, когда я устанавливаю для другого поставщика.
Если передача функций через переменную окружения не подходит, каким будет альтернативный метод для таких переопределений? Я не уверен, что объект конфигурации разыгрывается, когда вещи отправляются через магазин. Другой вариант, с которым я играю, - это переопределение всех файлов в модуле. Я знаком с методами Ruby с использованием import_path, но в исследовании я не видел эквивалентных методов JS/npm.