С помощью webpack, я'м пытаюсь импортировать равно с лодашь` кажется, что будет импортировать все. Я'пробовала делать следующие без успеха:
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'
Вы можете установить лодашь.равно как один модуль без установки всего пакета lodash вот так:
npm install --save lodash.isequal
При использовании ECMAScript 5 и на CommonJS модули, вы затем импортировать его, как это:
var isEqual = require('lodash.isequal');
Используя модули ES6, это будет:
import isEqual from 'lodash.isequal';
И вы можете использовать его в коде:
const obj1 = {username: 'peter'};
const obj2 = {username: 'peter'};
const obj3 = {username: 'gregory'};
isEqual(obj1, obj2) // returns true
isEqual(obj1, obj3) // returns false
Источник: документация Лодашь
После импорта, вы можете использовать функция равно
в ваш код. Обратите внимание, что это не входит в объект с именем_
, если вы импортировать его таким образом, чтобы вы
don'или ссылку на него с `.они равны, но напрямую с равно
.
Альтернатива: использование лодашь-Эс
Как указал @kimamula:
С webpack 4 и лодашь-Эс 4.17.7 и выше, этот код работает.
import { isEqual } from 'lodash-es';
Это потому, что webpack 4 поддерживает противопоказания флаг и лодашь-Эс
4.17.7 и выше включает в себя флаг (который имеет значение false
).
Почему бы не использовать вариант с косой? Другие ответы по этому вопросу Советуем также можете использовать тире вместо точки, вот так:
import isEqual from 'lodash/isequal';
Это тоже работает, но есть два незначительных недостатка:
НПМ установки-сохранить лодашь
), а не только небольшая отдельная lodash.пакет isequal; место для хранения дешевые и быстрые процессоры, так что вы можете не заботиться об этомравно
в среднем на 28% больше (пробовал webpack 2 и webpack 3, С или без Бабеля, с или без уродовать)Если вы просто хотите, чтобы включить равно
и функции лодашь
(полезные для поддержания вашего размера небольшой пучок), вы можете сделать это в ЕС6;
import isEqual from 'lodash/isEqual'
Это почти так же, как и то, что'ы, описанной в в лодашь
ридми, за исключением того, что они используют требуют синтаксиса ()`.
var at = require('lodash/at');
С webpack 4 и лодашь-Эс 4.17.7 и выше, этот код работает.
import { isEqual } from 'lodash-es';
Это потому, что webpack 4 поддерживает противопоказания
флаг и лодашь-Эс 4.17.7 и выше включает в себя флаг (который имеет значение false
).
Редактировать
Начиная с версии 1.9.0, пакет также поддерживает в "побочные эффекты" по: false
, threrefore `импорт { равно } с 'лодашь-Эс'; также дерево shakable с участка.
Не связанные с webpack, но я'будете добавлять его здесь, так как в настоящее время многие люди переходят на TypeScript.
Вы также можете импортировать одну функцию из лодашь, используя импорт равно от 'лодашь/равно'; в машинопись с флагом
esModuleInterop` в опциях компилятора (tsconfig.в JSON)
пример
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"lib": ["es6", "dom"],
"moduleResolution": "node",
"esModuleInterop": true,
...
}
}
Лодашь перечисляет несколько вариантов в их сведений:
$ НПМ я ... сохранить лодашь $ НПМ я-сохранить-Дев Бабель-плагин-лодашь @Бабеля/ЦПИ @Бабеля/предустановка-ОКР
.babelrc
{ на "модули" и: не лодашь, что"], на "заготовки" по: [[: " с Бабеля/ОКР и quot@;, { "по цели-то": { "в узел" Ну: 6 } }]] }
константный addOne = добавить(1)
_.Карта([1, 2, 3], addOne)
Примерно к этому:
импорт _add используются с 'лодашь/ФП/добавить'
_map импорт из 'лодашь/карта'
константный addOne = _add используются(1) _map([1, 2, 3], addOne) ``
$ НПМ я ... сохранить лодашь $ НПМ я-сохранить-Дэв лодашь-webpack-плагин Бабель-основной Бабель-погрузчик Бабель-плагин-лодашь Бабель-предустановки-ОКР webpack
webpack.config.js
:
``
ВАР LodashModuleReplacementPlugin = требуют('лодашь-webpack-плагин');
ВАР webpack = требуют('webpack');модуль.экспорт = { 'модуль': { 'правил': [{ 'использовать': 'Бабель-погрузчик', 'тест': /.в JS$/, 'исключить': /папки node_modules/, 'вариантов': { 'Плагины': ['лодашь'], 'пресеты': [['ОКР', { 'модули': ложь, 'цели': { 'узел': 4 } }]] } }] }, 'Плагины': [ новый LodashModuleReplacementPlugin, новый webpack.оптимизировать.UglifyJsPlugin ] }; ``
$ лодашь распределить экспорт=Эс -о ./
это действительно работает для меня
import { isEqual } from 'lodash';
импорт { равно } с 'лодашь-Эс';` это импортировать всю библиотеку. Я использую пакет, который должна сделать дерево трясется по умолчанию.
Всякий раз, когда я'вэ написал свои модули, это им импорт синтаксис произведения и свертки успешно древо качает, поэтому я'm немного запутался, почему он выиграл'т работать с Лодашь.