Используя webpack, я пытаюсь импортировать isEqual, поскольку, 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'
javascript
lodash
adang3
источник
источник
Ответы:
Вы можете установить
lodash.isequal
как один модуль, не устанавливая весь пакет lodash , например:При использовании модулей ECMAScript 5 и CommonJS вы затем импортируете их следующим образом:
Используя модули ES6, это будет:
И вы можете использовать это в своем коде:
Источник: документация Lodash
После импорта вы можете использовать
isEqual
функцию в своем коде. Обратите внимание, что это не часть объекта с именем,_
если вы импортируете его таким образом, поэтому вы не ссылаетесь на него_.isEqual
, а напрямую сisEqual
.Альтернатива: Использование
lodash-es
Как указал @kimamula :
Этот код работает с webpack 4 и lodash-es 4.17.7 и выше.
Это связано с тем, что webpack 4 поддерживает флаг sideEffects, а
lodash-es
версия 4.17.7 и выше включает флаг (для которого установлено значениеfalse
).Почему бы не использовать версию с косой чертой? Другие ответы на этот вопрос предполагают, что вы также можете использовать тире вместо точки, например:
Это тоже работает, но есть два незначительных недостатка:
npm install --save lodash
), а не только небольшой отдельный пакет lodash.isequal ; место для хранения дешевое, а процессоры быстрые, поэтому вам может быть все равноisEqual
пакетов с минимальным примером кода в среднем на 28% больше (пробовал webpack 2 и webpack 3, с или без Babel, с или без Uglify)источник
_ is not defined
при использовании_.isEquals
_.isEqual
, надо использовать напрямуюisEqual
npm --save lodash.whatever
каждую функцию отдельно, но больший размер пакета, безусловно, может сделать целесообразным использование метода периода. Я удивлен, что есть разница, поэтому я рад, что вы нам подсчитали.Если вы хотите просто включить,
isEqual
а не остальныеlodash
функции (полезно для сохранения небольшого размера пакета), вы можете сделать это в ES6;Это в значительной степени так же , как то , что описано в в
lodash
README , за исключением того, что они используютrequire()
синтаксис.источник
Этот код работает с webpack 4 и lodash-es 4.17.7 и выше.
Это связано с тем, что webpack 4 поддерживает
sideEffects
флаг, а lodash-es 4.17.7 и выше включает флаг (для которого установлено значениеfalse
).редактировать
Начиная с версии 1.9.0, Parcel также поддерживает
"sideEffects": false
, поэтомуimport { isEqual } from 'lodash-es';
дерево может быть изменено с помощью Parcel.источник
Не имеет отношения к webpack, но я добавлю его сюда, поскольку многие люди в настоящее время переходят на машинописный текст.
Вы также можете импортировать одну функцию из lodash, используя
import isEqual from 'lodash/isEqual';
машинописный текст сesModuleInterop
флагом в параметрах компилятора (tsconfig.json)пример
источник
Lodash перечисляет несколько вариантов в своем README :
столпотворение-плагин-lodash
.babelrc
Примерно к этому:
lodash-WebPack-плагин
webpack.config.js
:lodash-es с использованием lodash cli
$ lodash modularize exports=es -o ./
источник
это действительно сработало для меня
источник
import { isEqual } from 'lodash-es';
импортирует всю библиотеку. Я использую Rollup, который по умолчанию должен встряхивать дерево.Когда бы я ни писал свои собственные модули, этот именованный синтаксис импорта работает, и Rollup успешно качает дерево, поэтому я немного не понимаю, почему он не будет работать с Lodash.
источник