有没有办法在捆绑包中选择性地添加功能?
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() {}
}
美好的一天,我的任务是创建两个不同的捆绑包,一个用于 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() {}
}