Angular 如何用JHipster中的webpack配置替换文件夹中的文件?
我想用JHipster中的webpack配置替换文件夹中的文件。例如,dev config将webapp/app/home文件夹中的文件替换为environments/dev/homeAngular 如何用JHipster中的webpack配置替换文件夹中的文件?,angular,webpack,jhipster,Angular,Webpack,Jhipster,我想用JHipster中的webpack配置替换文件夹中的文件。例如,dev config将webapp/app/home文件夹中的文件替换为environments/dev/home 我知道@angular devkit/build angular:pure angular中的浏览器可以替换配置中的文件,但JHipster中没有使用它,而且似乎无法替换文件夹中的文件。谢谢您的帮助,但我无法理解您的建议 最后,我决定在AngularCompilerPlugin中获取文件夹下的所有文件并设置为Ho
我知道@angular devkit/build angular:pure angular中的浏览器可以替换配置中的文件,但JHipster中没有使用它,而且似乎无法替换文件夹中的文件。谢谢您的帮助,但我无法理解您的建议 最后,我决定在AngularCompilerPlugin中获取文件夹下的所有文件并设置为HostReplacementPath 我写的如下 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 '';
}
这不是JHipster在webpack/webpack.common.js中使用copy webpack插件所做的吗?谢谢你的回复。根据您的建议,我只为angular的组件html添加了一个参数,但它似乎没有被编译。复制webpack插件是否会在编译前复制文件?可能是的,我不知道它是否可以更改。请参见。在webpack:dev和webpack:prod中调用package.json中的webpack之前,您是否考虑过使用webpack来执行此操作?虽然,如果您必须在webpack中执行此操作,您可以定义一个常量并在组件或模板中进行测试,但这是一种常见做法,JHipster已经使用webpack.DefinePlugin完成了此操作。
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
}),