如何在 rollupjs 中禁用 Tree shaking
How to disable Tree shaking in rollupjs
我正在尝试使用 RollUp.js 将多个 javascript 文件捆绑在一起,但是当我这样做时,未使用的 classes 会被删除。这个过程叫做 tree shaking,我想禁用它。
我找到了this但是好像没有什么效果
// rollup.config.js
let configuration = {
output: {
format: 'es',
},
name: 'namename',
input: './main.js',
treeshake: false, // <-- disabling tree shaking?
};
export default configuration;
我在配置里加了treeshake: false
,但是好像没什么效果。这应该放在其他地方吗?
这是我要汇总的文件。
// Base.js
export default class Base {
aMethod() {
return "Hello";
}
}
// main.js
import Base from './Base.js';
所以通过这个设置,我调用 rollup --config
并且它产生了一些空的东西。很明显,tree shaking 正在发生,它正在删除 Base class,即使我导入了它。
到目前为止,我发现的唯一解决方法是实际创建 class 的实例,这是不可取的。
// main.js
import Base from './Base.js';
export default function () {
{
new Base();
}
}
我的目标是将捆绑的 javascript 文件与 JSContext 一起使用。它将 javascript 作为字符串接收,然后我会根据需要从那里调用方法。
// suppose rollup.js produces a file called "product.js"
let s = String(contentsOfFile: "path/to/product.js")
let context = JSContext()!
context.evaluateScript(s)
context.evaluateScript("var b = new Base()")
context.evaluateScript("b.aMethod()")
但由于摇树,Base class 从未被放置在 product.js
有没有办法禁用 tree shaking?
我为此添加了 sample project。
您的入口文件 — main.js
— 需要导出任何 类 或其他需要供外界访问的值:
// main.js
import Base from './Base.js';
import SubB from './SubB.js';
import SubA from './SubA.js';
export { Base, SubA, SubB };
我正在尝试使用 RollUp.js 将多个 javascript 文件捆绑在一起,但是当我这样做时,未使用的 classes 会被删除。这个过程叫做 tree shaking,我想禁用它。
我找到了this但是好像没有什么效果
// rollup.config.js
let configuration = {
output: {
format: 'es',
},
name: 'namename',
input: './main.js',
treeshake: false, // <-- disabling tree shaking?
};
export default configuration;
我在配置里加了treeshake: false
,但是好像没什么效果。这应该放在其他地方吗?
这是我要汇总的文件。
// Base.js
export default class Base {
aMethod() {
return "Hello";
}
}
// main.js
import Base from './Base.js';
所以通过这个设置,我调用 rollup --config
并且它产生了一些空的东西。很明显,tree shaking 正在发生,它正在删除 Base class,即使我导入了它。
到目前为止,我发现的唯一解决方法是实际创建 class 的实例,这是不可取的。
// main.js
import Base from './Base.js';
export default function () {
{
new Base();
}
}
我的目标是将捆绑的 javascript 文件与 JSContext 一起使用。它将 javascript 作为字符串接收,然后我会根据需要从那里调用方法。
// suppose rollup.js produces a file called "product.js"
let s = String(contentsOfFile: "path/to/product.js")
let context = JSContext()!
context.evaluateScript(s)
context.evaluateScript("var b = new Base()")
context.evaluateScript("b.aMethod()")
但由于摇树,Base class 从未被放置在 product.js
有没有办法禁用 tree shaking?
我为此添加了 sample project。
您的入口文件 — main.js
— 需要导出任何 类 或其他需要供外界访问的值:
// main.js
import Base from './Base.js';
import SubB from './SubB.js';
import SubA from './SubA.js';
export { Base, SubA, SubB };