所以,我浏览了一下我的遗留应用程序,有几个:
import _ from 'lodash';
一吨
import { method1, method2, method 3} from 'lodash';
因此,将它们全部更改为:
import method1 from 'lodash/method1';
import method2 from 'lodash/method2';
然后是其他人
import somFPmethod from 'lodash/fp/somFPmethod;
我认为在整个应用程序中总共有15个或唯一的方法。
我期待我的应用程序包(未缩小)从11. 8到喜欢,11. 5或什么。
上去了!
捆绑文件
BEFORE LODASH CHANGES:
Content-Length: 11813398
AFTER LODASH CHANGES:
Content-Length: 11991182
这怎么可能?
我正在使用:“lodash”:“^4.17.15”,
2条答案
按热度按时间toe950271#
无论您是导入单个函数还是整个Lodash包,只要您使用主Lodash NPM包(
npm install lodash
),这都无关紧要。如果您希望拥有Lodash的缩减版本并导入特定函数,则需要改用lodash-es
包:https://www.npmjs.com/package/lodash-es
然后,您可以导入特定函数,如下所示:
wbrvyc0a2#
这在lodash网站上进行了讨论:https://lodash.com/per-method-packages
每个方法程序包
Lodash方法在独立的每个方法包中可用,如lodash.mapvalues、lodash.pickby等。这些包仅包含方法所依赖的代码。
但是,不鼓励使用这些软件包,它们将在v5中删除。
虽然它们看起来更轻量级,但是它们通常会增加node_modules和webpack/rollup包的大小,而这些包在一个项目中依赖于多个per方法包和/或主lodash包。尽管主lodash包中的许多方法共享代码,per方法包在内部捆绑了它们所依赖的任何代码的副本。
例如,throttle在内部使用debounce。在一个项目中,如果同时使用主lodash包中的两种方法,throttle将导入与任何直接导入debounce的代码相同的debounce模块,因此只有一个debounce副本会出现在webpack包中。
另一方面,如果项目从lodash.throttle导入throttle,则除了从主lodash包或lodash. debounce中进行去抖动之外,内部捆绑到lodash.throttle中的去抖动代码的额外副本也将在webpack捆绑包中结束。