RollUp.jsを使用していくつかのjavascriptファイルをバンドルしようとしていますが、使用していないクラスは削除されます。このプロセスはツリーシェイクと呼ばれ、私はそれを無効にしたい。rollupjsでのツリーの揺れを無効にする方法
私は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
を呼び出し、何かを空にします。だから、明らかに、木の揺れが起こって、それをインポートしたにもかかわらずBaseクラスを削除しています。
私が見つけた唯一の回避策は、クラスのインスタンスを実際に作成することです。これは望ましくありません。
// 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()")
しかし、理由は基底クラスを振っ木のはproduct.js
に置かれることは決してありませんツリーに振とうを無効にする方法はありますか?
これにはsample projectが含まれています。
すごいああ! rollup.jsの作成者からの応答!これは大きな助けになります! – DerrickHo328
私はあなたの提案を使用して、 'export {Base、SubA、SubB}'だけでなく、エクスポートで指定されたすべてのクラスを持つjavascriptファイルを生成します。しかしJavaScriptCoreはキーワード "export"をサポートしていないようです。ですから、私の回避策は 'export default function(){Base、SubA、SubB}'をcjs形式で組み込むことです。 withは "export"をキーワードとして使用しません。 – DerrickHo328