Как добавить функциональность в стороннюю библиотеку с помощью Webpack - PullRequest
0 голосов
/ 16 октября 2019

Цель

Скажем, у меня есть в 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?

...