Цель
Скажем, у меня есть в package.json
"dependencies": {
"some-library": "^1.0.0"
}
И some-library
экспортирует объект. У меня есть файл «Утилиты», который по существу будет выполнять
import * as SomeLibrary from "some-library";
SomeLibrary.extraUtility = /* ... */
// and maybe introduce a requirement on some custom CSS related to the library
module.exports = SomeLibrary
Я хотел бы настроить все так, чтобы в остальной части моего кода JS, если я сделаю import ... from "some-library"
, он вместо этого разрешился в мой »Файл «Утилиты» выше, гарантируя, что extraUtility
присутствует, не забывая импортировать файл утилит отдельно, например,
// actual-code.js
import * as SomeLibrary from "some-library";
SomeLibrary.extraUtility(...)
Что я получил
В настоящее время у меня есть старая установка на основе Browserify, в которой я переименовываю исходную библиотеку в <module>-base
, затем в своем файле утилит я делаю
const SomeLibrary = require('some-library-base')
SomeLibrary.extraUtility = /* ... */
module.exports = SomeLibrary
и добавляю правило распознавателя модулей, которое отображает some-library
(или любые другие затронутые модули) в соответствующий файл утилит вместо node_modules. Это кажется очень хакерским, но это сделало работу. Но теперь я надеюсь перейти на современную установку на основе Webpack, и эта функциональность выглядит как самое большое препятствие. Существует ли параметр конфигурации или плагин для достижения этой цели с помощью Webpack? Нужно ли мне писать собственный плагин для имитации того, что я делал в сборке Browserify?