У меня есть проект, который использует формат модуля nodeJS (commonJS) и также должен (частично) запускаться в браузере.
У меня есть неизоморфные пути кода, в которые я условно включаю модули:
var impl;
try {
// in node, use node-impl
impl = require('../node-impl');
} catch (err) {
// running in browser, use browser-impl
impl = require('../browser-impl');
}
Теперь я хочу использовать webpack
для создания пакета, который запускается в браузере. Поэтому мне нужно определить внешние (специфичные для nodeJS) модули как external
в webpack.config.js
, чтобы они не попадали в пакет:
external: {
'../node-impl': true
}
Я подтвердил, что код "../node-impl" на самом деле не включен в комплект, но полученный код выглядит так:
/***/ },
/* 33 */
/***/ function(module, exports) {
module.exports = ../node-impl;
/***/ },
Это синтаксически неправильный JS, и браузер выдаст там синтаксическую ошибку.
Как этот сценарий правильно обрабатывается с помощью webpack.js? Имейте в виду, что я не хочу использовать веб-пакет для работы с nodeJS, с помощью веб-пакета следует создавать только пакеты браузера.