ロールアップ、commonjs、es6、およびツリーの揺れが正しく機能するようにしようとしています。CommonJSでロールアップし、トレシェイクを使用してインポートとエクスポートを行います。
現在、私は次のビルドスクリプトを持っている:
次main.js
ファイル
const { firstFunction } = require('./exports');
firstFunction();
をロードし、export.js
ファイル
export function firstFunction() {
return this.name;
}
export function secondFunction() {
return this.name;
}
は以下を出力
'use strict';
const rollup = require('rollup');
const resolve = require('rollup-plugin-node-resolve');
const commonjs = require('rollup-plugin-commonjs');
rollup.rollup({
input: 'main.js',
format: 'iife',
plugins: [
{
transform(code, id) {
return code;
}
},
resolve({
extensions: ['.js', '.jsx']
}),
commonjs({
extensions: ['.js', '.jsx']
})
]
})
.then(({ generate }) => generate({
format: 'iife',
name: 'test',
}))
.then(({ code }) => console.log(code));
:
var test = (function() {
'use strict';
function firstFunction$1() {
return this.name;
}
function secondFunction() {
return this.name;
}
var exports$1 = Object.freeze({
firstFunction: firstFunction$1,
secondFunction: secondFunction
});
var require$$0 = (exports$1 && undefined) || exports$1;
const { firstFunction } = require$$0;
firstFunction();
var main = {
};
return main;
}());
これは正しい動作であれば、私はわからないです、私はES6 export.js
ファイルをツリー揺れを使用することができるだろうと仮定し、したがって、私たちのバンドルされたコードにexport.js
からsecondFunction()
をインポートする必要はありませんでした。
私は多くの設定の組み合わせを試しましたが、何も木の揺れを働かせることはできないようです。
私はサーバ上でcommonjsを使用していて、同じファイルをクライアントにバンドルして使用していることに気づく価値があります - これが私にcjsとes6が混在している理由です。
可能であればrequireの代わりにimportを使用してください。 – Lux
@Luxノード上で実行されているmain.jsにcommonjsを使用する必要があります。 – Prisoner
'export.js'で' export'を使うと意味がありません( 's'は入力ミスであると仮定します)。また、あなたはその 'import'を翻訳します。ロールアップの全体のアイデアは、すべての 'import'を取り除き、1つの単一のIIFE(またはあなたが望むもの)で置き換えることです。 – Lux