我想通过JHipster中的webpack的配置替换文件夹中的文件。例如,dev-config将“ webapp/app/home
”文件夹中的文件替换为“ environments/dev/home
”。
我知道@angular-devkit/build-angular:browser
在纯Angular中可以替换配置中的文件,但是在JHipster中不使用它,并且似乎无法替换文件夹中的文件。
谢谢您的帮助,但我听不懂您的建议。
最后,我决定将所有文件放在一个文件夹下,并在AngularCompilerPlugin中设置为hostReplacementPaths。
我写如下。
tenant-util.js
const TENANT_ARG_KEY = '--tenant=';
module.exports = {
getTenant
};
/**
* webpack arg example: --tenant company1
* @param {string[]} argv process.argv
*/
function getTenant(argv /* : string[] */) /* : string */ {
if (!Array.isArray(argv)) {
return '';
}
for (let i = 0; i < argv.length; ++i) {
if (!argv[i].startsWith(TENANT_ARG_KEY)) {
continue;
}
return argv[i].substr(TENANT_ARG_KEY.length);
}
return '';
}
webpack.common.js
const tenantUtils = require('./tenant-utils');
const tenant = tenantUtils.getTenant(process.argv);
const hostReplacementPaths = {};
if (tenant) {
const glob = require('glob');
const replaceToFolder = `environments/${tenant}`;
const filenamesInEnvironment = glob.sync(`./src/${replaceToFolder}/**/*.*`);
if (!filenamesInEnvironment) {
throw Error('check the tenant setting');
}
for (const filename of filenamesInEnvironment) {
const originalFilename = filename.replace(replaceToFolder, 'main/webapp')
hostReplacementPaths[originalFilename] = filename;
}
}
...
new AngularCompilerPlugin({
mainPath: utils.root('src/main/webapp/app/app.main.ts'),
tsConfigPath: utils.root('tsconfig.app.json'),
sourceMap: true,
hostReplacementPaths: hostReplacementPaths
}),