Как я уже сказал в комментарии к вашему вопросу, идиоматический способ обработки конфигурации в веб-пакете - это DefinePlugin
, так что в вашем случае это будет означать выполнение обработки конфигурации в вашей конфигурации веб-пакета.Затем Webpack автоматически обработает интерполяцию ваших переменных конфигурации на месте, и вам не нужно будет вводить конфигурацию с помощью оператора import
.Что-то вроде:
// webpack.config.js
const webpack = require("webpack");
const config = require("./process-config")
module.exports = {
// ...
plugins: [
webpack.DefinePlugin({
config
})
]
};
// app.js
if (config.SOME_CONFIG_VAR) {
// do work when SOME_CONFIG_VAR=true
}
Сказав это, еще одним способом, более гармонирующим с тем, что вы ищете, может быть использование val-loader
это загрузчик, который
выполняет данный модуль и возвращает результат выполнения во время сборки, когда модуль требуется в комплекте
[ source ]
Использование val-loader
может выглядеть примерно так:
// webpack.config.js
module.exports = {
// ...
module: {
rules: [
{
test: /config.js$/,
use: [{ loader: "val-loader" }]
}
]
}
}
// config.js
const config = require("./process-config.js");
const JSON = require("json5");
module.exports = {
code: `module.exports = "${JSON.stringify(config)}"`
}
// app.js
const config = require("./config.js");
if (config.SOME_CONFIG_VAR) {
// do work when SOME_CONFIG_VAR=truet
}