Używając pakietu webpack, próbuję zaimportować isEqual, ponieważ lodash
wydaje się, że importuje wszystko. Próbowałem wykonać następujące czynności bez powodzenia:
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'
javascript
lodash
adang3
źródło
źródło
Odpowiedzi:
Możesz zainstalować
lodash.isequal
jako pojedynczy moduł bez instalowania całego pakietu lodash w następujący sposób:Korzystając z modułów ECMAScript 5 i CommonJS, importujesz je w następujący sposób:
Używając modułów ES6, byłoby to:
I możesz go użyć w swoim kodzie:
Źródło: dokumentacja Lodash
Po zaimportowaniu możesz użyć tej
isEqual
funkcji w swoim kodzie. Zauważ, że nie jest to część obiektu nazwanego,_
jeśli importujesz go w ten sposób, więc nie odwołujesz się do niego_.isEqual
, ale bezpośrednio za pomocąisEqual
.Alternatywa: używanie
lodash-es
Jak wskazał @kimamula :
Ten kod działa z pakietem webpack 4 i lodash-es 4.17.7 i nowszymi.
Dzieje się tak, ponieważ webpack 4 obsługuje flagę sideEffects, a
lodash-es
4.17.7 i nowsze zawierają flagę (która jest ustawiona nafalse
).Dlaczego nie używać wersji z ukośnikiem? Inne odpowiedzi na to pytanie sugerują, że możesz również użyć myślnika zamiast kropki, na przykład:
To też działa, ale są dwie drobne wady:
npm install --save lodash
), a nie tylko mały oddzielny pakiet lodash.isequal ; przestrzeń dyskowa jest tania, a procesory są szybkie, więc możesz nie przejmować się tymisEqual
są średnio o 28% większe (wypróbowano webpack 2 i webpack 3, z Babel lub bez, z Uglify lub bez)źródło
_ is not defined
podczas używania_.isEquals
_.isEqual
, powinieneś używać bezpośrednioisEqual
npm --save lodash.whatever
każdej funkcji osobno, ale większy rozmiar pakietu może z pewnością sprawić, że warto użyć metody okresowej. Dziwię się, że jest różnica, więc cieszę się, że sprawdziłeś dla nas liczby.Jeśli chcesz dołączyć
isEqual
tylko resztęlodash
funkcji, a nie pozostałe funkcje (przydatne do utrzymania małego rozmiaru pakietu), możesz to zrobić w ES6;To jest prawie tak samo jak to, co jest opisane w tej
lodash
README , chyba że używająrequire()
składni.źródło
Ten kod działa z pakietem webpack 4 i lodash-es 4.17.7 i nowszymi.
Dzieje się tak, ponieważ webpack 4 obsługuje
sideEffects
flagę, a lodash-es 4.17.7 i nowsze zawierają flagę (która jest ustawiona nafalse
).Edytować
Począwszy od wersji 1.9.0, Parcel obsługuje również
"sideEffects": false
, dlategoimport { isEqual } from 'lodash-es';
jest również wstrząsany drzewem z Parcel.źródło
Nie jest związany z pakietem internetowym, ale dodam go tutaj, ponieważ wiele osób obecnie przechodzi na maszynopis.
Możesz również zaimportować pojedynczą funkcję z lodash, używając
import isEqual from 'lodash/isEqual';
w skrypcie maszynowym zesModuleInterop
flagą w opcjach kompilatora (tsconfig.json)przykład
źródło
Lodash wymienia kilka opcji w swoim README :
babel-plugin-lodash
.babelrc
Z grubsza do tego:
lodash-webpack-plugin
webpack.config.js
:lodash-es przy użyciu lodash cli
$ lodash modularize exports=es -o ./
źródło
to faktycznie zadziałało dla mnie
źródło
import { isEqual } from 'lodash-es';
importuje całą bibliotekę. Używam Rollup, który powinien domyślnie wykonywać potrząsanie drzewem.Za każdym razem, gdy piszę własne moduły, ta nazwana składnia importu działa, a Rollup pomyślnie się trzęsie, więc jestem trochę zdezorientowany, dlaczego nie działa z Lodash.
źródło