如何在JHipster中通过webpack的配置替换文件夹中的文件?

问题描述 投票:0回答:1

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

我知道@angular-devkit/build-angular:browser在纯Angular中可以替换配置中的文件,但是在JHipster中不使用它,并且似乎无法替换文件夹中的文件。

angular webpack jhipster
1个回答
0
投票

谢谢您的帮助,但我听不懂您的建议。

最后,我决定将所有文件放在一个文件夹下,并在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
        }),
© www.soinside.com 2019 - 2024. All rights reserved.