У меня есть библиотека, совместимая с NodeJS и браузером, и обе они запускаются через Webpack для создания окончательного пакета.Проблема, с которой я сталкиваюсь, заключается в том, что Webpack перепишет все операторы require()
в __webpack_require__()
и попытается связать библиотеку, которая не работает для таких вещей, как fs
и worker_threads
.Как заставить его игнорировать определенные require()
s и связанные с ними механизмы (require.resolve()
, import
и т. Д.) При заданной входной строке?
Я читал, что могу использовать webpack.IgnorePlugin
, ноЯ бы предпочел, чтобы пользователь не добавлял в свою сборку специальное правило для моей библиотеки.Я также не мог заставить это работать, он все еще переписал require()
s.Я также читал, что я могу сделать eval('require("fs")')
, но это кажется глупым, но я готов сделать это, если это действительно лучший способ.
Пример:
//example.js
if(typeof window !== "undefined") {
//Browser
var myWorker = new Worker();
}
else {
//NodeJS
var Worker = require("worker_threads"); //I want Webpack to keep this line as-is
var myWorker = new Worker();
}