Usando webpack, estoy tratando de importar isEqual ya que lodash
parece estar importando todo. He intentado hacer lo siguiente sin éxito:
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
fuente
fuente
Respuestas:
Puede instalar
lodash.isequal
como un solo módulo sin instalar todo el paquete lodash de la siguiente manera:Al usar los módulos ECMAScript 5 y CommonJS, lo importas así:
Usando módulos ES6, esto sería:
Y puedes usarlo en tu código:
Fuente: documentación de Lodash
Después de importar, puede usar la
isEqual
función en su código. Tenga en cuenta que no es parte de un objeto con nombre_
si lo importa de esta manera, por lo que no lo referencia con_.isEqual
, sino directamente conisEqual
.Alternativa: uso
lodash-es
Como señaló @kimamula :
Con webpack 4 y lodash-es 4.17.7 y superior, este código funciona.
Esto se debe a que webpack 4 es compatible con el indicador sideEffects y
lodash-es
4.17.7 y superior incluye el indicador (que se establece enfalse
).¿Por qué no usar la versión con la barra diagonal? Otras respuestas a esta pregunta sugieren que también puede usar un guión en lugar de un punto, así:
Esto también funciona, pero hay dos inconvenientes menores:
npm install --save lodash
), no solo el pequeño paquete separado lodash.isequal ; el espacio de almacenamiento es económico y las CPU son rápidas, por lo que es posible que no le importeisEqual
son en promedio un 28% más grandes (probé webpack 2 y webpack 3, con o sin Babel, con o sin Uglify)fuente
_ is not defined
cuando uso_.isEquals
_.isEqual
, debería usarlo directamenteisEqual
npm --save lodash.whatever
cada función por separado, pero el tamaño de paquete más grande ciertamente podría hacer que valga la pena usar el método de período. Me sorprende que haya una diferencia, así que me alegro de que hayas corrido los números por nosotros.Si solo desea incluir
isEqual
y no el resto de laslodash
funciones (útil para mantener pequeño el tamaño de su paquete), puede hacerlo en ES6;Esto es más o menos lo que se describe en el
lodash
archivo README , excepto que allí usan larequire()
sintaxis.fuente
Con webpack 4 y lodash-es 4.17.7 y superior, este código funciona.
Esto se debe a que webpack 4 admite
sideEffects
flag y lodash-es 4.17.7 y superior incluye la bandera (que está configurada enfalse
).Editar
A partir de la versión 1.9.0, Parcel también es compatible
"sideEffects": false
, por lo tanto,import { isEqual } from 'lodash-es';
también se puede sacudir en árbol con Parcel.fuente
No está relacionado con el paquete web, pero lo agregaré aquí, ya que muchas personas se están moviendo al mecanografiado.
También puede importar una sola función desde lodash usando
import isEqual from 'lodash/isEqual';
en mecanografiado con laesModuleInterop
bandera en las opciones del compilador (tsconfig.json)ejemplo
fuente
Lodash enumera un par de opciones en su README :
babel-plugin-lodash
.babelrc
Aproximadamente a esto:
lodash-webpack-plugin
webpack.config.js
:lodash-es usando el cli de lodash
$ lodash modularize exports=es -o ./
fuente
esto realmente funcionó para mí
fuente
import { isEqual } from 'lodash-es';
está importando toda la biblioteca. Estoy usando Rollup que debería hacer temblar los árboles por defecto.Cada vez que escribo mis propios módulos, esta sintaxis de importación llamada funciona y Rollup se agita con éxito, así que estoy un poco confundido sobre por qué no funcionará con Lodash.
fuente