Angular 如何用JHipster中的webpack配置替换文件夹中的文件?

Angular 如何用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

我想用JHipster中的webpack配置替换文件夹中的文件。例如,dev config将webapp/app/home文件夹中的文件替换为environments/dev/home


我知道@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
        }),