私はrollup
を初めて使用していますが、予期せぬ結果が出ています。下の例では、3つのファイルをrollup
の出力と探しています。不要な依存関係を含むロールアップと出力に機能がありません
Here's a repo with my complete example.
私は三つのファイル01.js
、02.js
、03.js
を持っています。これは何をされ
03.js
import Promise from 'bluebird'
export function stupidReference (str) {
return Promise.resolve(str)
}
01.js
import { fakePromise } from './02'
export default fakePromise
02.js
import { map } from 'lodash'
import { stupidReference } from './03'
export function fakePromise (str) {
return stupidReference(str)
}
export function fakeMap (arr) {
return map(arr, item => item + ' is stupid')
}
rollup
が返されます。
(実際の)
import { map } from 'lodash';
import Promise from 'bluebird';
function fakePromise (str) {
return stupidReference(str)
}
export default fakePromise;
これは、私はロールアップが返すように期待するものです。 (予想される)
import Promise from 'bluebird';
function stupidReference (str) {
return Promise.resolve(str)
}
function fakePromise (str) {
return stupidReference(str)
}
export default fakePromise;
私はロールアップは、あなたのプロジェクトに必要としなかったすべての依存関係を振るだろうという印象の下にありました。しかし、の実際の出力には不要な依存関係lodash
が含まれており、別の内部機能stupidReference
もありません。
私が期待したとおりに動作しない理由が不思議です。 rollup
ツールを正しく使用しているのかどうか不思議です。これが意図された使用でない場合は、私が探している機能を実現するツールを見つけることが大好きです。私は関数(または上記の01.js
のようなファイル)を提供したいと思いますし、その関数を実行するのに必要なコードだけを持っています。
アップデート1
私のコードで何が起こっているのかわからないが、ロールアップサイトの編集者は、別のファイルに引っ張り、ダウンツリーを次のことができます。 Here's a link to exactly what I have.
アップデート2
私が間違ってバベルが設定されていることを実現し、私は、以下の両方のモジュールをインストールし、ならびに.babelrc
とrollup.config.js
を加えました。
npm i rollup-plugin-babel babel-preset-es2015-rollup --save
rollup.config.js
import babel from 'rollup-plugin-babel';
export default {
entry: './01.js',
plugins: [ babel() ],
format: 'es6'
};
。babelrc同じ出力がまだ生産されている。このアップデートで
{
"presets": [ "es2015-rollup" ]
}
。
ねえリッチ!私は確かに自分自身を蹴っている。 'lodash'については少し混乱しています。私のビルドでは( '01.js'の関数で使われていない)' lodash'は必要ないので、これは未使用のインポートです。私たちはシェイクをする必要はありません(ロダッシュの 'map'関数をソースに含めてください。' rollup'が作成したバンドルの 'npm'依存としては必要ありません)。 – ThomasReggi
' map'は未使用のインポートですGH [issue](https://github.com/rollup/rollup/issues/595)を開きました - 理想的にはその指定子を捨てるでしょう)しかし、 'lodash'自体は潜在的な副作用のためにそうではありません。これらの副作用をより積極的に破棄するオプションについての議論がありますが、非常に扱いにくいです。 –
私は探しているものが少し異なります。特定のファイル/機能を別のノードモジュールに分解するツールを構築することに興味があります関連する 'packages.json'ファイルを作成します)。未使用のデープと潜在的な副作用を無視します。ロールアップは一部の方法であるように感じます。[' acorn-umd'](https://github.com/megawac/acorn-umd )は役に立ちます。['Standard'](https://github.com/feross/standard)には、どの変数が使われていないかを知る方法があります。' 'map '定義されているが使用されていない。より多くの研究が必要です。 – ThomasReggi