以下にプルリクエストのフィードバックがありましたが、lodashをインポートするにはどの方法が正しいのでしょうか。
それ自体はかなり重いlodash(v3)の以前のバージョンでは、lodashライブラリ全体をインポートするのではなく、特定のモジュール/関数のみをインポートするようにしてください。新しいバージョン(v4)についてはよくわかりません。
import has from 'lodash/has';
vs
import { has } from 'lodash';
ありがとう
lodashはすべての関数を単一のファイルに保持しているのでimport has from 'lodash/has';
の方が優れています。したがって、100kで 'lodash'ライブラリ全体をインポートするのではなく、lodashのhas
関数をインポートするほうがいいでしょう。
Webpack 4を使用している場合、以下のコードはツリーシェイク可能です。
import { has } from 'lodash-es';
注意すべき点
CommonJSモジュールはツリーシェイク可能ではないので、 lodash
(CommonJSではなく)ESモジュールとしてエクスポートされたLodashライブラリである lodash-es
を必ず使用してください。 ).
lodash-es
のpackage.jsonには"sideEffects": false
が含まれています。これはパッケージ内のすべてのファイルに副作用がないことをwebpack 4に通知します( https://webpack.js.org/guides/tree-shaking/#mark-the副作用のないファイル( )。
エクスポートされたメンバがどこにも使用されていなくても、モジュールのバンドル担当者が副作用を含む可能性のあるファイルをツリーシェイクしないため、この情報はツリーシェイクに不可欠です。
編集
バージョン1.9.0以降、Parcelは"sideEffects": false
もサポートします。rereforeimport { has } from 'lodash-es';
もParcelとツリーシェイク可能です。これはCommonJSモジュールのツリーシェイクもサポートしていますが、 私の実験 によるとESモジュールのツリーシェイクはCommonJSよりも効率的です。
中括弧内に特定のメソッドをインポートする
import { map, tail, times, uniq } from 'lodash';
長所:
短所:
もしあなたがbabelを使っているのなら、 babel-plugin-lodash をチェックしてください。手間と小さなバンドル。
それはいくつかの 制限があります :