En utilisant webpack, j'essaie d'importer isEqual puisque lodash
semble tout importer. J'ai essayé de faire ce qui suit sans succès:
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
la source
la source
Réponses:
Vous pouvez installer en
lodash.isequal
tant que module unique sans installer l'ensemble du package lodash comme ceci:Lorsque vous utilisez les modules ECMAScript 5 et CommonJS, vous les importez ensuite comme ceci:
En utilisant des modules ES6, ce serait:
Et vous pouvez l'utiliser dans votre code:
Source: documentation Lodash
Après l'importation, vous pouvez utiliser la
isEqual
fonction dans votre code. Notez qu'il ne fait pas partie d'un objet nommé_
si vous l'importez de cette façon, vous ne le référencez donc pas avec_.isEqual
, mais directement avecisEqual
.Alternative: utilisation
lodash-es
Comme l'a souligné @kimamula :
Avec webpack 4 et lodash-es 4.17.7 et supérieur, ce code fonctionne.
Ceci est dû au fait que webpack 4 prend en charge l' indicateur sideEffects et que la version
lodash-es
4.17.7 et supérieure inclut l'indicateur (qui est défini surfalse
).Pourquoi ne pas utiliser la version avec le slash? D'autres réponses à cette question suggèrent que vous pouvez également utiliser un tiret au lieu d'un point, comme ceci:
Cela fonctionne aussi, mais il y a deux inconvénients mineurs:
npm install --save lodash
), pas seulement le petit package séparé lodash.isequal ; l'espace de stockage est bon marché et les processeurs sont rapides, vous pouvez donc ne pas vous en soucierisEqual
sont en moyenne 28% plus grandes (essayé webpack 2 et webpack 3, avec ou sans Babel, avec ou sans Uglify)la source
_ is not defined
lors de l'utilisation_.isEquals
_.isEqual
, vous devriez utiliser directementisEqual
npm --save lodash.whatever
chaque fonction séparément, mais la plus grande taille de bundle pourrait certainement valoir la peine d'utiliser la méthode period. Je suis surpris qu'il y ait une différence, donc je suis heureux que vous ayez présenté les chiffres pour nous.Si vous voulez simplement inclure
isEqual
et non le reste deslodash
fonctions (utile pour garder la petite taille de votre bundle), vous pouvez le faire dans ES6;C'est à peu près la même chose que ce qui est décrit dans le
lodash
README , sauf qu'ils utilisent larequire()
syntaxe.la source
Avec webpack 4 et lodash-es 4.17.7 et supérieur, ce code fonctionne.
Ceci est dû au fait que webpack 4 prend en charge le
sideEffects
drapeau et que lodash-es 4.17.7 et supérieur inclut le drapeau (qui est défini surfalse
).Éditer
À partir de la version 1.9.0, Parcel prend également en charge
"sideEffects": false
, par conséquent, l'arborescenceimport { isEqual } from 'lodash-es';
peut également être modifiée avec Parcel.la source
Pas lié au webpack mais je l'ajouterai ici car beaucoup de gens passent actuellement à la dactylographie.
Vous pouvez également importer une seule fonction à partir de lodash en utilisant
import isEqual from 'lodash/isEqual';
dans typescript avec l'esModuleInterop
indicateur dans les options du compilateur (tsconfig.json)exemple
la source
Lodash répertorie quelques options dans leur README :
babel-plugin-lodash
.babelrc
À peu près à ceci:
plugin-webpack-lodash
webpack.config.js
:lodash-es utilisant le lodash cli
$ lodash modularize exports=es -o ./
la source
cela a fonctionné pour moi
la source
import { isEqual } from 'lodash-es';
importe la bibliothèque entière. J'utilise Rollup qui devrait faire trembler les arbres par défaut.Chaque fois que j'ai écrit mes propres modules, cette syntaxe d'importation nommée fonctionne et Rollup réussit à trembler dans l'arborescence, donc je ne sais pas pourquoi cela ne fonctionnera pas avec Lodash.
la source