我有一个Webpacked TypeScript应用程序,可加载json配置文件。该项目尚处于起步阶段,因此我们尚未在生产环境中拥有良好的配置存储,因此我们将并排存储配置文件:config.json
和config.dev.json
。
在TypeScript中,我希望能够输入
import Config from './path/to/config.json';
如果将--mode development
传递到webpack,我希望它要求./path/to/config.dev.json
。
仅使用Webpack或Webpack + tsconfig.json可以做到吗?
答案 0 :(得分:1)
以下答案的想法是使用webpack-define-plugin
webpack.config.js
const argv = require('yargs').argv;
const webpack = require('webpack');
// Import all app configs
const appConfig = require('./path/to/config.json'); /* Base config */
const appConfigDev = require('./path/to/config.dev.json'); /* Development */
const appConfigProd = require('./path/to/config.prod.json'); /* Production */
const ENV = argv.env || 'dev';
function composeConfig(env) { /* Helper function to dynamically set runtime config */
if (env === 'dev') {
return { ...appConfig, ...appConfigDev };
}
if (env === 'production') {
return { ...appConfig, ...appConfigProd };
}
}
// Webpack config object
module.exports = {
entry: './src/app.js',
...
plugins: [
new webpack.DefinePlugin({
__APP_CONFIG__: JSON.stringify(composeConfig(ENV))
})
]
};
const config = __APP_CONFIG__
/* config available in module scope */