我看到导入整个lodash库会占用磁盘上相当多的空间:
$ du . | grep lodash
1696 ./lodash/fp
5000 ./lodash
在我的代码中,我正在做
require('lodash');
和我的package.json看起来像:
"dependencies": {
...
"lodash": "^4.6.1",
...
}
请注意,这仅适用于后端项目,而不适用于网络,如果这会产生影响。
所以我的问题是 - 在没有导入整个该死的东西的情况下,导入一片lodash(只是我需要的函数)的最新方法是什么?
看起来这里有一些答案:
https://gist.github.com/callumlocke/bbfc524eaed6b3556dab
我的猜测是我应该在后端项目中使用点语法:
"dependencies": {
...
"lodash.X": "^4.6.1",
...
}
然后像这样导入它:
require('lodash.X');
答案 0 :(得分:9)
有两种方法可以做到:
require('lodash.head')
require('lodash/head')
require('lodash.head')
您安装具有单独功能的包:
npm install --save lodash.head
这将此添加到package.json:
"dependencies": {
"lodash.head": "^4.0.1"
}
您可以将其用于:
var head = require('lodash.head');
require('lodash/head')
您安装了完整的lodash
包:
npm install --save lodash
这将此添加到package.json:
"dependencies": {
"lodash": "^4.17.4"
}
您可以将其用于:
var head = require('lodash/head');
更复杂的例子:
您可以_
使用您需要的两个功能:
var head = require('lodash.head');
var tail = require('lodash.tail');
var _ = {pick, defaults};
效果相似,风格各异:
var _ = {
head: require('lodash.head'),
tail: require('lodash.tail'),
};
如果你只想要一些lodash,例如lodash.pick然后使用:
有关打包为模块的单个函数的更多示例,请参阅:
您也可以使用自定义构建,请参阅:
当您使用完整包并仅导入所需的功能时:
var _ = {
head: require('lodash/head'),
tail: require('lodash/tail'),
};
然后像Webpack这样的工具可能能够优化您的构建,只包含您实际使用的代码。当您使用以下内容导入整个lodash时
var _ = require('lodash');
然后静态分析无法确定在运行时将使用哪个函数,因此很难进行优化,通常构建中包含的代码通常比实际需要的多。
答案 1 :(得分:3)
答案 2 :(得分:0)
如this answer中所述,您可以使用lodash-es
作为替代。而不是为每个要使用的lodash函数运行npm install lodash ...
。通过使用lodash-es
,您只需安装一次,然后就可以导入要在代码中使用的lodash函数。
使用NPM安装lodash-es
:
npm install lodash-es
要导入特定功能,isEqual
,
import { isEqual } from "lodash-es";
现在,您可以在代码内使用isEqual
函数了。
const a = {a: "a"};
const b = {b: "b"};
if (isEqual(a, b)) {
//do something
}
尽管如此,这仅适用于您的情况下的后端项目。但是,FYI和其他可能会在这里使用的读者webpack
加lodash-es
可以将我的捆绑包大小从18 kb
降低到78 kb
,而一般是lodash
。 >