Usando o webpack, estou tentando importar o isEqual, pois lodash
parece estar importando tudo. Eu tentei fazer o seguinte sem sucesso:
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
fonte
fonte
Respostas:
Você pode instalar
lodash.isequal
como um único módulo sem instalar todo o pacote lodash da seguinte maneira:Ao usar os módulos ECMAScript 5 e CommonJS, você os importa da seguinte maneira:
Usando os módulos ES6, isso seria:
E você pode usá-lo em seu código:
Fonte: documentação do Lodash
Após a importação, você pode usar a
isEqual
função no seu código. Observe que ele não faz parte de um objeto nomeado_
se você o importar dessa maneira; portanto , não faça referência a ele_.isEqual
, mas diretamente a eleisEqual
.Alternativa: Usando
lodash-es
Como apontado por @kimamula :
Com o webpack 4 e o lodash-es 4.17.7 e superior, esse código funciona.
Isso ocorre porque o webpack 4 suporta o sinalizador sideEffects e
lodash-es
4.17.7 e superior inclui o sinalizador (que está definido comofalse
).Por que não usar a versão com a barra? Outras respostas a esta pergunta sugerem que você também pode usar um traço em vez de um ponto, assim:
Isso funciona também, mas há duas desvantagens menores:
npm install --save lodash
), não apenas o pequeno pacote lodash.isequal ; o espaço de armazenamento é barato e as CPUs são rápidas, então você pode não se importar com issoisEqual
são em média 28% maiores (tentei o webpack 2 e o webpack 3, com ou sem Babel, com ou sem Uglify)fonte
_ is not defined
quando se utiliza_.isEquals
_.isEqual
, você deve usar diretamenteisEqual
npm --save lodash.whatever
cada função separadamente, mas o tamanho maior do pacote certamente valeria a pena usar o método de período. Estou surpreso com a diferença, então estou feliz que você tenha corrido os números para nós.Se você deseja incluir
isEqual
e não o restante daslodash
funções (útil para manter o tamanho do pacote pequeno), você pode fazer isso no ES6;Este é praticamente o mesmo que o que está descrito no o
lodash
README , exceto que não usamrequire()
sintaxe.fonte
Com o webpack 4 e o lodash-es 4.17.7 e superior, esse código funciona.
Isso ocorre porque o webpack 4 suporta
sideEffects
flag e o lodash-es 4.17.7 e superior inclui o flag (que está definido comofalse
).Editar
A partir da versão 1.9.0, o Parcel também suporta
"sideEffects": false
, portanto,import { isEqual } from 'lodash-es';
também é instável com o Parcel.fonte
Não está relacionado ao webpack, mas vou adicioná-lo aqui, já que muitas pessoas estão migrando para o texto datilografado.
Você também pode importar uma única função do lodash usando
import isEqual from 'lodash/isEqual';
no texto datilografado com oesModuleInterop
sinalizador nas opções do compilador (tsconfig.json)exemplo
fonte
O Lodash lista algumas opções em seu README :
babel-plugin-lodash
.babelrc
Aproximadamente a isso:
lodash-webpack-plugin
webpack.config.js
:lodash-es usando o lodash cli
$ lodash modularize exports=es -o ./
fonte
isso realmente funcionou para mim
fonte
import { isEqual } from 'lodash-es';
está importando a biblioteca inteira. Estou usando o pacote cumulativo que deve agitar a árvore por padrão.Sempre que eu escrevi meus próprios módulos, essa sintaxe de importação nomeada funciona e a árvore Rollup é bem-sucedida, com um tremor, por isso estou um pouco confuso sobre o porquê de não funcionar com o Lodash.
fonte