Мы используем WebPack в одностраничном приложении. Приложение развертывается во многих средах. У нас есть требование, когда приложение должно вызывать конкретную конечную точку в заданной среде.
Чтобы обеспечить адрес конечной точки для данной среды, необходимо иметь модуль среды. Это текущее решение (их много, и это не вопрос). Однако нам нужно исключить config.js из minification, чтобы он мог быть перезаписан как часть процесса развертывания.
Конфигурация config.js выглядит следующим образом:
module.exports = {
env: {
endpointUrl: 'http://1.2.3.4',
authUrl: 'http://5.6.7.8'
}
};
И ссылается на следующее:
const endpointUrl = config.env.endpointUrl;
const authUrl = config.env.authUrl;
Конфигурация WebPack выглядит следующим образом:
var webpack = require('webpack');
module.exports = {
entry: {
main: './src/js/main.jsx',
login: './src/js/login-main.jsx'
},
output: {
path: __dirname + '/dist',
filename: '[name].bundle.js'
},
devtool: 'source-map',
module: {
loaders: [{
test: /.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
plugins: ['transform-react-jsx'],
query: {stage: 0}
}, {
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'eslint-loader'
}]
},
plugins: [
new webpack.ProvidePlugin({
fetch: 'imports?this=>global!exports?global.fetch!whatwg-fetch'
}),
new webpack.DefinePlugin({
__DEV__: JSON.stringify(JSON.parse(process.env.DEV || false))
})
]
};
До сих пор мы рассмотрели externals и загрузчики модулей но ничего не нашли. Исключение в загрузчике модуля по-прежнему вызывает минимизацию модуля.
Некоторые вопросы, которые мы рассмотрели: