Если у меня есть код, использующий Buffer
, но он оптимизируется во время минимизации, я не хочу, чтобы полифилл Buffer
был включен.
У меня есть код, использующий Buffer
, поэтому, когда я создаю для производства, NodeSourcePlugin
распознает, что моя цель - webworker
, и автоматически связывает Buffer
полизаполнение. Это замечательно, поскольку он предотвращает взлом моего кода при его запуске в среде, отличной от Node.js, но я также использую DefinePlugin
для отключения некоторого кода в рабочей среде.
Например, мой конфиг содержит:
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
Затем у меня есть такой код:
public static btoa(s: string) {
if (process.env.NODE_ENV) {
return Buffer.from(s).toString('base64')
} else {
return btoa(s)
}
}
Однако, после того, как я запустил сборку для цели webworker
, это сводится к следующему:
static btoa(t){return btoa(t)}
Buffer
больше не используется, но в комплекте все еще присутствует полифилл. Хотя я могу удалить его вручную, добавив node: {Buffer: false}
в конфигурацию моего веб-пакета, это нежелательно, потому что в конечном итоге мне может понадобиться Buffer
для какого-то другого кода или зависимости в будущем.
Это похоже на Polyfill добавляется до того, как оптимизация завершена, но мне интересно, есть ли способ быть умнее с этим.