Шпаргалка Npm против пряжи

задняя часть внешний интерфейс Yarn NPM
Шпаргалка Npm против пряжи
DJI Mavic Air

Там шутка, так сказать: «Старик любит есть грецкие орехи. Я купил два фунта с моей женой вчера. Когда старик был молодым, она была сломана, улыбнулась и сказала мне: ты все еще с молотом Увидимся, чтобы использовать вашу руку. Мой рот, курил, приходит: люди и животные - это разница в том, что люди будут использовать инструменты. ... ». Откройте этот специальный сценарий, это предложение все еще очень разумно; в конце концов, из древнего периода Стоун или раньше, теперь, какой здравый смысл, знания, которые они узнали, знания, которые они узнали .... Можно сказать, что различия между людьми (кроме уровня гения), только преимуществами и недостатками использования инструмента. При использовании инструментов многие люди имеют большую степень пребывания на уровне использования. Если у вас нет проблем, это почти надежно; это не проблема, но, возможно, потому что нет тщательного понимания, оно отсутствует Объект. У меня есть воображение, есть много лучшего, так к сожалению.

Честно говоря, когда я работал на фронт-конце, давно мне не хватало достаточных знаний о НПМ, что заставило меня чувствовать себя «слишком поздно» для многих его информации; в этой статье я смогу объективно указать соответствующие функции NPM и пряжи используются для отображения различий между двумя; в то же время «общий список команд» перечислены в виде сравнения для простого использования в качестве ссылки (будет обновляться для улучшения); я хотел бы Возьмите эту возможность еще раз пропасть классическую поговорку:«Если рабочий хочет хорошо работать, он должен сначала наточить свои инструменты», чтобы поделиться с вами.

NPM vs YarnNPM vs Yarn

Что такое Npm, пряжа

Что такое нпм?

npmкоторый:npm package manager , Это способ повторного использования кода от других разработчиков, а также способ поделиться кодом с другими и легко управлять различными версиями кода.npmНачал как управляющий узел пакета, поэтому вы найдете много модулей, доступных на стороне сервера. Есть также несколько команд дополнения пакета для вас, чтобы использовать в командной строке. Вы также найдете пакеты, которые можно использовать на переднем конце.

npmСостоит из трех отдельных частей: веб-сайта, реестра и интерфейса командной строки. Веб-сайт — это основной инструмент для пользователей, позволяющий находить пакеты, реестр — это большая база данных с информацией о пакетах, а CLI — это то, как разработчики публикуют свои пакеты в реестре или загружают пакеты, которые они хотят установить. Подробнее см.what-is-npm.

Что такое пряжа?

YarnЭто менеджер пакетов для вашего кода, с помощью которого вы можете использовать код разработчиков со всего мира или делиться своим собственным кодом. Yarn делает это быстро, безопасно и надежно, так что вам не о чем беспокоиться. пройти черезYarn, вы можете использовать решения других разработчиков для решения различных проблем, чтобы упростить собственный процесс разработки. Если вы столкнетесь с проблемами во время использования, вы можете сообщить о них или предложить решения. Пряжа обновится, чтобы синхронизироваться, как только проблема будет устранена.

Yarn— это новый инструмент управления пакетами JavaScript, разработанный Facebook, Google, Exponent и Tilde. Он не пытается полностью заменить npm. Yarn также является новым клиентом CLI, который извлекает модули из реестра npm. Порядок регистрации не изменится — вы по-прежнему сможете получать и публиковать пакеты как обычно. Он существует для решения проблемы, которую использует командаnpmСтолкнулись с небольшими проблемами. Конечно,NodeВерсии постоянно меняются, а сам Npm активно обновляется.

Об установке/обновлении

Как установить/обновить Npm

Как установить нпм

npmНачинал как менеджер пакетов Node, поэтому его установка связана с Node.js. Что касается того, как установить Node.js, официальный Npm, вInstalling Node.js and updating npmобъяснил. При попытке обновить Node.js на разных платформах ранее я также сталкивался с различными проблемами, некоторые из которых находятся вОбновление/установка NodeJsВ статье сделана запись, после долгого метания сделанный вывод согласуется с официальным сайтом:

Если вы используете OS X или Windows, лучший способ установить Node.js: используйтеСтраница загрузки Node.jsодин из установщиков в . (Микропримечание автора: если я пользователь из материкового Китая, перейдите наЗеркало Taobao Node.jsскачать, будет самый быстрый способ).

Как обновить нпм

  1. npm установить npm@latest -g (npm установить npm -g)
  2. Обновить (перезагрузить) Node.js

Как установить пряжу

Как установитьYarnОфициальный представитель пряжи дал очень подробное описание, см. подробностиInstall Yarn; охватывает MacOs, Windows, Linux и другие платформы, а также предоставляет некоторые альтернативные методы установки, например, черезnpmустановить:

npm install --global yarn

Конечно,Yarnофициальный вАльтернативный способ укладки пряжиЯсно, что:

Как правило, не рекомендуется проходитьnpmУстановитьYarn, при установке Yarn с менеджером пакетов на базе Node пакет не подписывается, а только через базовыйSHA1Хэш однозначно проверяется на целостность. Это угроза безопасности при установке приложений системного уровня. По этим причинам настоятельно рекомендуется устанавливать Yarn, используя метод, наиболее подходящий для вашей операционной системы.

Но в реальной эксплуатации это один из самых удобных способов, и проблем я пока не встречал, конечно, лучше всего следовать официально рекомендованному способу, если вы пользуетесь и знакомы с операционной системой Mac, также очень легко установить Yarn рекомендованным способом.brew install yarn(примечание автора).

Как обновить пряжу

Чтобы обновить Yarn, вы можете использовать соответствующие команды во время установки; если это операционная система Mac, используйтеbrewУстановите, так что это обновлено:

brew upgrade yarn

еслиYarnЕсли он установлен через пакет Debian/Ubuntu, вы можете выполнить следующую команду для обновления:

sudo apt-get update && sudo apt-get install yarn

также можно использоватьyarnсебя, чтобы обновить себя:

yarn global add yarn

Если интересно узнать больше, как обновитьyarnметод см.:yarn self-update should update using the same installation method originally used.

Сравнение общих команд между npm и yarn

дифференцированная команда

Npm Yarn Описание функции
npm install(npm i) yarn install(yarn) Установите все зависимости согласно package.json
npm i --save [пакет] yarn add [package] добавить зависимости
npm i --save-dev [пакет] пряжа добавить [пакет] –dev Добавьте зависимости в devDependencies
npm i -g [package] yarn global add [package] Установить зависимости глобально
обновление npm --сохранить yarn upgrade [package] обновить зависимости
npm uninstall [package] yarn remove [package] удалить зависимости

Команды для той же операции

Npm Yarn Описание функции
npm run yarn run Запустите скрипт, предопределенный в package.json
npm config list yarn config list Просмотр информации о конфигурации
npm config устанавливает адрес репозитория реестра Конфигурация пряжи устанавливает адрес репозитория реестра Изменить адрес склада
npm init yarn init Интерактивное создание/обновление файлов package.json
npm list yarn list Просмотр установленных пакетов узла в текущем каталоге
npm login yarn login Сохраните имя пользователя и адрес электронной почты
npm logout yarn logout Удалите свое имя пользователя и адрес электронной почты
npm outdated yarn outdated Проверить наличие устаревших зависимостей
npm link yarn link Связывание зависимостей при разработке для использования в других проектах
npm unlink yarn unlink Отключить зависимые пакеты
npm publish yarn publish Опубликовать пакет в npm
npm test yarn test тест = тест пряжи
npm bin yarn bin Отображает каталог установки, в котором находится файл bin.
yarn info yarn info Показать информацию о пакете

К сказанному необходимо сделать следующие дополнительные пояснения:

  • В npm вы можете использовать npm config set save true, чтобы установить --save в качестве поведения по умолчанию, но это не очевидно для большинства разработчиков. В пряже такие действия, как добавление и удаление в package.json, используются по умолчанию.
  • Для пакетов, которые будут добавлены или обновлены, как npm, так и yarn могут указывать определенные версии или теги, например:

    yarn add [package]@[version]
    yarn add [package]@[tag]

  • В Китае при использовании npm лучше всего заменить его зеркальным отображением Taobao, чтобы свести к минимуму влияние на сеть и значительно повысить скорость установки зависимых пакетов:

    npm config set registry registry.npm.taobao.org
    yarn config set registry registry.npm.taobao.org

    Конечно, вы также можете установить псевдонимыcnpm:

    alias cnpm="npm --registry=http://registry.cnpmjs.org --cache=$HOME/.npm/.cache/cnpm"
    

Команды, уникальные для Npm

  • npm rebuild pacakgename: Используется для перестроения после изменения содержимого пакета, напримерnpm rebuild node-sass; При использовании Sass (Scss) в качестве препроцессора таблицы стилей и при переупаковке вы можете столкнуться со следующими ошибками, и для решения этой проблемы проще всего использоватьrebuildкоманда, даnode-sassПросто перестроить.

Module build failed: ModuleBuildError: Module build failed: Error: Node Sass does not yet support your current environment:
This usually happens because your environment has changed since running npm install. Run npm rebuild node-sass to build the binding for your current environment.

Команды, уникальные для Yarn

  • yarn import: Установлен согласно оригинальному npmnode_modulesСоздать каталогyarn.lockдокумент;
  • yarn licenses: Список лицензионной информации об установленных пакетах;
  • yarn pack: создать сжатый gzip-архив, зависящий от пакета;
  • yarn why: отображает информацию о том, почему был установлен пакет.
  • yarn autoclean: очистить и удалить ненужные файлы из зависимостей пакетов.
  • ...

Дополнительные приемы, которые использует npm

Как найти правильный пакет npm

Поиск подходящего пакета может быть довольно сложной задачей — на выбор предлагаются тысячи модулей.npms.io/, существование этого сайта значительно облегчает эту задачу; он показываеткачественный,Популярностьа такжеподдерживатьи другие показатели. Эти расчеты основаны на том, есть ли у модуля устаревшие зависимости, настроены ли линтеры, включены ли тесты или была ли сделана недавняя фиксация.

Выполнить бинарный файл пакета npm

Очевидно, черезnpmилиyarnустановлен и помещен в./node_modulesПакеты в каталогах, бинарные исполняемые файлы которых доступны./node_modules/.bin, так как же вызвать его из корневого каталога проекта? Ниже приведены несколько способов, вы можете выбрать любой из них для достижения своей цели:

Для удобства примера, вот работающаяresponsive-email-template(Создание лучших адаптивных шаблонов электронной почты) в качестве примера; полезноmjmlЭта библиотека; рекомендуемый способ для этой библиотеки - установить и использовать ее локально; поэтому для запуска соответствующей команды вы можете управлять ею, используя следующие методы:

  • старый и примитивный способ

В папке, куда вы установили MJML, теперь вы можете запустить:

./node_modules/.bin/mjml --watch src/index.mjml -o dist/index.html
  • Буду./node_modules/.bin/добавить в переменную окружения
export PATH="$PATH:./node_modules/.bin"
mjml --watch src/index.mjml -o dist/index.html
  • или используйте горячие клавишиnpm bin
$(npm bin)/mjml --watch src/index.mjml -o dist/index.html
  • Или используйте команду скрипта npm
// 将命令配置在 package.json 文件,使用 scripts 字段定义脚本命令
"scripts": {
  "mjml": "mjml --watch src/index.mjml -o dist/index.html"
}

// 使用之时,只需运行如下命令即可:
npm run mjml
  • или с помощьюnpx

Уведомление:npxвключен вnpm > v5.2, или может быть установлен отдельно.

# npm install -g npx
npx mjml --watch src/index.mjml -o dist/index.html

Как профилировать пакеты npm

После того, как мы выбрали наши модули, мы должны взглянуть на документацию и проверить открытые проблемы, чтобы лучше понять, что нам понадобится в нашем приложении. Не забывайте, что чем больше пакетов npm вы используете, тем выше риск быть уязвимым или вредоносным.

Если вы хотите открыть домашнюю страницу модуля из cli, вы можете сделать это:

npm home axios

Чтобы проверить открытые проблемы или общедоступные дорожные карты (если они есть), вы можете попробовать следующее:

npm bugs axios

Кроме того, если вы просто хотите проверить git-репозиторий модуля, введите:

npm repo axios

Столь же мощные, как и эти, скрипты npm

npm (и Yarn тоже) позволяютpackage.jsonВнутри файла используйтеscriptsПоля определяют команды сценария. Он поддерживает подстановочные знаки,Переменная, хуки, передача внешних параметров, поддержка параллельного и асинхронного выполнения и т. д., поэтому вы можете использоватьnpm script, чтобы создать собственный эффективный рабочий процесс. Из-за недостатка места эта часть не будет здесь повторяться.Чтобы узнать о конкретном использовании и принципе работы, пожалуйста, обратитесь к статье, написанной @ Ruan Yifeng:руководство по использованию скриптов npm.

Например, иногда возникает необходимость удалить всю историю коммитов репозитория Git, сохранив при этом код в его текущем состоянии; и удалить.gitПапки могут вызывать проблемы в вашем git-репозитории, поэтому есть другой, более безопасный подход: см.Как удалить всю историю коммитов репозитория Git. Но эта операция делается за один подход, и она неизбежна и трудоемка. потом с помощьюnpm script, выполните следующую команду, и вы можете получить ее одним щелчком мыши (конечно, команду можно определить самостоятельно); если вам нужно выполнить больше, вы также можете добавить больше операций позже.

"scripts": {
  "clean-commit": "git checkout --orphan latest_branch && git add -A && git commit -am 'clean past commit history 😊' && git branch -D master && git branch -m master && git push -f origin master"
}

// 或者也可以将其作下拆解,譬如像这样:
"scripts": {
  "recommit": "git add -A && git commit -am 'clean past commit history 😊'",
  "repush": "git branch -D master && git branch -m master && git push -f origin master",
  "clean-commit": "git checkout --orphan latest_branch && npm run recommit && repush"
}

О package-lock.json и yarn.lock

О пряже.lock

Иногда проект имеет длительный цикл, и пока он непрерывно развивается, зависимые библиотеки также будут сильно меняться; иногда вы можете просто захотеть запуститьnpm iОбновляйте плагины, которые не скачались, но не хотите время от времени обновлять некоторые другие плагины, которые от них зависят, до последних, в результате чего возникают всякие странные проблемы;package-lock.jsonа такжеyarn.lockЭто существование создано для решения этой проблемы.

использоватьnpmилиyarn, будутpacakge.jsonЭтот файл используется для отметки зависимостей вашего проекта от каждого пакета библиотеки. Например, ваш проект имеет следующие зависимости:

"dependencies": {
    "jade-package": "^2.3.4"
}

этого^определена обратно (новая) совместимая зависимость; вnpm<5.0Ранее, еслиjade-packageверсия превышает2.3.4, и совпадает с основным номером версии (2), это позволяет загрузить последнюю версиюjade-packageбиблиотечные пакеты, например, могут работатьnpm iКогда конкретная загруженная версия может быть2.5.8.

В большинстве случаев эта обратная совместимость зависит от загрузки последнего пакета библиотеки без проблем; однако, посколькуnpmЭто мир с открытым исходным кодом, и семантика версии каждого пакета библиотеки может быть разной, не все разработчики могут строго соблюдать этот принцип:Тот же пакет библиотек с тем же основным номером версии, его интерфейс соответствует требованиям совместимости. Кроме того, существуют и другие зависимости между различными пакетами библиотек. В идеале использование Semantic Versioning для выпуска исправлений не должно содержать больших изменений, но, к сожалению, это не всегда так. Эта стратегия npm может привести к тому, что две машины будут иметь одинаковыеpackage.jsonНа файловой машине на самом деле установлена ​​другая версия пакета, что может вызвать некоторые ошибки. Иногда та же машина немного невнимательнаnpm i, что может привести кnode_modulesФактические зависимости, установленные в файле, обновляются, что может привести к тому, что проект запустится и станет неузнаваемым.

yarn.lockОн существует для решения этой проблемы: чтобы получать согласованные результаты на разных машинах, Yarn требуется больше информации, чем список зависимостей, который вы настраиваете в package.json. Yarn должен точно хранить версию каждой установленной зависимости, это похоже на npm-shrinkwrap.json и не имеет побочных эффектов. Просто обратите внимание, что:

yarn.lockФайл создается автоматически и должен быть полностьюYarnуправлять. Когда вы добавляете/обновляете/удаляете зависимости с помощью Yarn CLI, он автоматически обновит вашyarn.lockдокумент. Не редактируйте этот файл напрямую, вы можете легко что-нибудь сломать.

О package-lock.json

когдаNode.jsОбновитьv8.0Позже встроенный npm также был обновлен до версии 5.0; помимо значительного улучшения скорости, он также принес другие большие расширения, в том числеpackage-lock.json: действие установки модуля (изменение содержимого папки node_modules) будет сгенерировано или обновленоpackage-lock.jsonдокумент;package-lock.jsonкnpm, то естьyarn.lcokкyarnПерепечатка; более подробную информацию можно найти наnpm package-lock.json.

Кроме того, стоит упомянуть, что кто-то на Github специально предоставилSynpИнструмент для: преобразования yarn.lock в package-lock.json и наоборот (преобразования yarn.lock в package-lock.json и наоборот).

написано в конце статьи

У Yarn много похвал по сравнению с конфигурацией Npm по умолчанию. Он может легко генерировать файлы блокировки, очень быстро устанавливать зависимости и будет автоматически добавлен в package.json.В то же время стоимость установки и использования Yarn также очень мала, что делает Yarn идеальной заменой npm. Для npm пряжа немного похожа на io.js и node.js того времени, у них одна и та же цель, как для дальнейшего раскрепощения, так и для повышения производительности, теперь под влиянием пряжи сам npm тоже сильно улучшился (версия > = 5,0). Последнее, что я хочу сказать, это то, что независимо от того, какой инструмент вы используете, вы должны полностью понимать всю картину, знать ее преимущества и недостатки, и тогда вы сможете лучше контролировать ее и сделать так, чтобы она добавляла красок в вашу эффективную и счастливую жизнь.

@2017-12-30 в Шэньчжэне, Наньшань Последнее изменение: 2018-01-02


Статьи, которые могут вас заинтересовать: