0
我想使用RollUp.js將幾個javascript文件捆綁在一起,但是當我這樣做時,未使用的類將被刪除。這個過程稱爲樹抖動,我想禁用它。我發現this但它似乎沒有任何作用。如何禁用rollupjs中的樹抖動
// 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
,它產生一些空的東西。很明顯,即使我輸入了基類,也會發生樹抖動。
到目前爲止,我發現的唯一解決方法是實際創建類的實例,這是不受歡迎的。
// main.js
import Base from './Base.js';
export default function() {
{
new Base();
}
}
我的目標是使用帶有JSContext的捆綁JavaScript文件。它將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()")
因爲樹搖晃基類永遠不會被放置在product.js
有沒有一種方法來禁用樹搖晃,但?
我已爲此包含sample project。
哇哦!來自rollup.js創建者的回覆!這是一個很大的幫助! – DerrickHo328
當我使用您的建議時,它會生成一個包含導出中指定的所有類以及'export {Base,SubA,SubB}'的JavaScript文件。不過,它看起來像JavaScriptCore不支持關鍵字「導出」。所以我的解決方法是使用以cjs格式構建的'export default function(){Base,SubA,SubB}'。與不使用「導出」作爲關鍵字。 – DerrickHo328