このライブラリは、いくつかの変換を行うための依存関係としてjimp
を宣言しているようです。
私は私が持っている(私のプロジェクトの依存関係を分析していますnode-vibrant
私にpackage.json
などルックスjimp
スペースの多くを必要とします:
ncdu 1.14 ~ Use the arrow keys to navigate, press ? for help
--- /deploy/out/node_modules ---------------
185.0 MiB [##########] /<strong i="11">@jimp</strong>
38.4 MiB [## ] /chrome-aws-lambda
34.2 MiB [# ] /sharp
11.0 MiB [ ] /<strong i="12">@browserless</strong>
11.0 MiB [ ] /<strong i="13">@babel</strong>
9.2 MiB [ ] /jimp
6.3 MiB [ ] /core-js
4.8 MiB [ ] /lodash
3.2 MiB [ ] /jsdom
3.1 MiB [ ] /moment
3.0 MiB [ ] /iltorb
2.4 MiB [ ] /colorable
2.1 MiB [ ] /cssstats
1.9 MiB [ ] /<strong i="14">@cliqz</strong>
1.7 MiB [ ] /<strong i="15">@microlink</strong>
1.7 MiB [ ] /graphql
1.7 MiB [ ] /port-numbers
1.7 MiB [ ] /node-vibrant
重要なのは、 jimp
はデフォルトでいくつかのプラグインが含まれているということです。
--- /deploy/out/node_modules/<strong i="20">@jimp</strong> ---------
/..
7.6 MiB [##########] /plugin-print
7.0 MiB [######### ] /core
6.9 MiB [######### ] /plugin-resize
6.9 MiB [######### ] /plugin-color
6.8 MiB [######## ] /plugin-crop
6.8 MiB [######## ] /plugin-blur
6.8 MiB [######## ] /plugin-rotate
6.8 MiB [######## ] /png
6.8 MiB [######## ] /custom
6.8 MiB [######## ] /plugin-blit
6.8 MiB [######## ] /plugin-contain
6.8 MiB [######## ] /plugin-normalize
6.8 MiB [######## ] /plugins
6.8 MiB [######## ] /plugin-cover
6.8 MiB [######## ] /plugin-gaussian
6.8 MiB [######## ] /plugin-scale
6.8 MiB [######## ] /bmp
6.8 MiB [######## ] /plugin-mask
6.8 MiB [######## ] /plugin-displace
6.8 MiB [######## ] /jpeg
ただし、すべてのプラグインがnode-vibrant
関連しているかどうかはわかりません。
2つのアプローチを提案したいと思います。
sharp
使用を検討してください(私のお気に入りの解決策)
私のバンドルでわかるように、依存関係としてsharp
もあります。
両者の主な違いは、 jimp
が100%javascriptコードであるのに対し、 sharp
息子のバイナリに委任することです。
最初は、依存関係がないのでjimp
方が良いと思いましたが、現実は大きく異なります。 sharp
プリインストールされたバイナリを出荷し、パッケージサイズは実際には非常に小さいです。 jimp
。
実際、 sharp
パフォーマンスが優れています。を参照してください。
http://sharp.pixelplumbing.com/en/stable/performance/
jimp
除外するだけですjimp
が追加されている185MBの内部では、実際に使用されているものはほんのわずかだと思います。
node-vibrant
からそれを行う方法はわかりませんが、たとえば、README.mdに小さなセクションを追加すると、必要なjimp
プラグインが明示的にリストされ、残りの不要なものを除外するのに十分なはずです。ビルド前の手順
これを調査するために行った作業が大好きです。心から感謝します。
sharp
は、(名前にもかかわらず)ブラウザがそれ自体でnode-vibrant
を実行することをサポートしているため、私たちが採用できる解決策になる可能性は低いです。
ただし、 node-vibrant
での使用の多くには、 jimp
は必要ないというのは絶対に正しいです。 現在、現在の「安定した」コードベースの開発を制限しており、コードベースをモノレポに書き直す作業を行っています(つまり、将来的にもnode-vibrant
から使用したいものを選択できます。 !)そして、それがサイズの最適化であることを確認しました。
私の前には非常に忙しい週がありますが、この変更を行うために次の週末にループバックするために最善を尽くします
そうでなければ、私たちは常にプルリクエストを愛し、受け入れます👀
@jimp
背後にある別のことにcore-js
があり、この依存関係はすべてのプラグインごとにインストールされます。
そのため、 @jimp
サイズは185MBです。 core-js
は7.4MiB x27モジュール=スペースが多すぎます。
おそらくcore-js
は、プラグイン間で共有できる方法で宣言できます。
サイズを縮小するためにjimpを構成する方法に関する追加の調査を次に示します。
@jimp/custom
パッケージは、プラグインを最初から追加するためのベースとして機能します。 デフォルトのエクスポートはconfigure
関数で、 types
(サポートされている画像タイプ)とplugins
(使用するプラグイン)の配列を取ります。
@jimp/types
は、メインのjimp
パッケージに含まれるすべてのタイプをエクスポートするため、同じイメージのノードを簡単にサポートできるようになりました。
node-vibrantが使用していると思われる唯一の特別なプラグインはresize
関数です。 対応するプラグインは@jimp/plugin-resize
です。
@vibrant/image-node
パッケージは、スクリプトの上部にある次のように更新できます。
import configure from '@jimp/custom';
import types from '@jimp/types'; // all of jimp's default types
import resize from '@jimp/plugin-resize'; // resize function
const Jimp = configure({
types: [types],
plugins: [resize]
});
いくつかのタイピングを書く必要があるようですが、@ NotWoodsに大いに感謝します。 今週は終わらせてみます
当初思っていたよりもタイピングに時間がかかっています。 長い道のりを進んでいることはわかっていますが、エコシステムと私たち自身のニーズを確実に修正したいと思っています。
jimpの入力は少し時間がかかりましたが、上流での貢献は良好です。
https://github.com/oliver-moran/jimp/pull/770
これがマージされた後、 node-vibrant
最適化します
Jimp 0.8.4のリリースにより、これを実行できるようになりました。 今夜はPRをオープンします! :NS
インポートでjimp 0.8.4
後のいくつかの問題を修正するために、 https://github.com/oliver-moran/jimp/pull/815で待機してい
これは、 3.1.5
リリースの時点で解決されています
最も参考になるコメント
サイズを縮小するためにjimpを構成する方法に関する追加の調査を次に示します。
@jimp/custom
パッケージは、プラグインを最初から追加するためのベースとして機能します。 デフォルトのエクスポートはconfigure
関数で、types
(サポートされている画像タイプ)とplugins
(使用するプラグイン)の配列を取ります。@jimp/types
は、メインのjimp
パッケージに含まれるすべてのタイプをエクスポートするため、同じイメージのノードを簡単にサポートできるようになりました。node-vibrantが使用していると思われる唯一の特別なプラグインは
resize
関数です。 対応するプラグインは@jimp/plugin-resize
です。@vibrant/image-node
パッケージは、スクリプトの上部にある次のように更新できます。