有没有办法在捆绑包中选择性地添加功能?

Is there a way to optionally add function in bundle?

美好的一天,我的任务是创建两个不同的捆绑包,一个用于 CMS,另一个用于产品团队,我想在 CMS 捆绑包中但不在产品团队中的功能很少。

我有一个 Class XYZ

Class XYZ {

constructor() {}

forCms() {}

forProduct() {}

}

我想要两个不同的捆绑包:

对于 CMS(我需要 forCms 功能):

Class XYZ {

constructor() {}

forCms() {} //<--- notice methods

}

对于产品(我需要产品功能):

Class XYZ {

constructor() {}

forProduct() {} //<--- notice methods

}

我搜索了很多,找到了 Env。变量,我将它们用于某些逻辑,例如:

function abc() {
        const env = process.env.NODE_ENV;
        switch (env) {
            case "cms":
                //some logic
                break;
            default:
               //some logic
                 });
        }
}

我不知道,我该如何实现?或者除了 ENV 之外还有什么不同的方法吗?在像 Webpack 或 Rollup 这样的捆绑器中完成这个?

任何建议都会有所帮助!

如果您正在寻找如何根据环境变量将方法附加到原型,您可以这样做:

export interface LayerManager {
    forCms: Function;
    forProduct: Function;
}

export class LayerManager {
    firstName: string = '';
    constructor(name: string) {}
}

// @ts-ignore
if (process.env.NODE_ENV === "cms") {
    LayerManager.prototype.forCms = function() {}
} else {
    LayerManager.prototype.forProduct = function() {}
}

Playground