2017-04-18 32 views
18

我試圖導入isEqual,因爲lodash似乎在導入所有內容。我試着做了,沒有從成功的WebPack以下如何導入單個lodash函數?

import { isEqual } from 'lodash' 

import isEqual from 'lodash/lang' 

import isEqual from 'lodash/lang/isEqual' 

import { isEqual } from 'lodash/lang' 

import { isEqual } from 'lodash/lang' 
+0

你的意思是https://www.npmjs.com/package/lodash.isequal? –

+1

不,我想導入其他功能 – cvDv

+2

以我的理解,你現在可以一個一個或全部導入,沒有中間立場。即使它在軟件包中添加了很多依賴關係,我也會一一推薦。json,以後一個一個地測試和升級方法會比較容易,而不是所有的都在一個步驟中 –

回答

28

可以作爲一個單獨的模塊安裝lodash.isequal,而無需安裝整個lodash包像這樣:

npm install --save lodash.isequal 

當使用ECMAScript 5 CommonJS的模塊,你再導入它是這樣的:

var isEqual = require('lodash.isequal'); 

使用ES6模塊,這將是:

import isEqual from 'lodash.isequal'; 

來源:Lodash documentation

導入後,您可以在代碼中使用isEqual功能。請注意,它不是名爲_的對象的一部分,因此如果您以此方式導入它,那麼您的 不會是將其與_.isEqual進行比較,而是直接與isEqual進行比較。

注:這個問題的其他答案建議你也可以使用破折號,而不是一個點,就像這樣:

import isEqual from 'lodash/isequal'; 

這工作也是如此,但也有兩個小缺點:

  • 你必須安裝整個lodash包(npm install --save lodash),而不僅僅是單獨的小lodash.isequal包;存儲空間便宜,而且CPU速度很快,所以你可能不在意這個
  • 使用像webpack這樣的工具時產生的bundle會稍微大些;我發現,束尺寸與isEqual最小代碼的例子是平均大28%(試過的WebPack 2和的WebPack 3,有或沒有巴別,有或沒有醜化)
+0

由於某種原因,對於我而言,我使用_.isEquals時'_ is not defined' ' – cvDv

+2

@cvDv,但它不應該像'_.isEqual'一樣使用,你應該直接使用'isEqual' –

+0

hmm im仍然得到'isEqual'沒有定義,我添加了'import isEqual from'lodash.isequal''到頂部和下面是使用isEquals – cvDv

0

這實際上爲我工作

import { isEqual } from 'lodash'; 
+11

您仍然可以使用此語法獲得完整的lodash庫。 OP希望只獲得isEqual功能,減少他的捆綁包的大小。 – Nyegaard

15

如果您只想包含isEqual而不是lodash函數的其餘部分(用於保持包大小很小),則可以在ES6中執行此操作;

import isEqual from 'lodash/isEqual' 

這是幾乎一樣的什麼在the lodash README描述,除了那裏,他們用require()語法。

var at = require('lodash/at');