Перейти к содержимому

Linux npm что это

  • автор:

Введение в пакетный менеджер NPM для начинающих

Node.js делает возможным написание серверных приложений на JavaScript. Он построен на движке JavaScript V8 и написан на C++ — и поэтому он быстрый. Изначально он создавался как серверное окружение для приложений, но разработчики начали использовать его для создания инструментов, помогающих автоматизировать выполнение локальных задач. В итоге возникшая вокруг Node.js новая экосистема инструментов (типа Grunt и Gulp), привела к трансформации процесса фронтенд-разработки.

Чтобы использовать все эти инструменты (или пакеты) в Node.js нам нужна возможность устанавливать и управлять ими. Для этого создан npm, пакетный менеджер Node.js. Он устанавливает нужные вам пакеты и предоставляет удобный интерфейс для работы с ними. Но перед тем как начать использовать npm, вам надо установить в своей системе Node.js.

Установка Node.js

Перейдите на страницу загрузок Node.js и скачайте нужную вам версию. Есть установщики для Windows и Mac, а также скомпилированные бинарники и исходный код для Linux. Кроме того, в Linux вы можете установить Node.js с помощью пакетного менеджера, все это описано в документации.

В этой статье мы будем использовать стабильную версию 5.7.0.

Посмотреть, где установлен Node и проверить версию можно следующими командами:

$ which node /usr/local/bin/node $ node --version v5.7.0 

Чтобы удостовериться, что установка прошла успешно, выполним несколько команд в простой интерактивной среде Node (REPL).

$ node > console.log('Node is running'); Node is running > .help .break Sometimes you get stuck, this gets you out .clear Alias for .break .exit Exit the repl .help Show repl options .load Load JS from a file into the REPL session .save Save all evaluated commands in this REPL session to a file > .exit 

Установка работает, поэтому теперь мы можем сфокусироваться на npm, который включен в установку.

$ which npm /usr/local/bin/npm $ npm --version 3.6.0 

Пакеты Node

С помощью npm можно устанавливать пакеты локально или глобально. В локальном режиме пакеты устанавливаются в каталог node_modules родительского каталога. Владельцем каталога является текущий пользователь. Глобальные пакеты устанавливаются в каталог /lib/node_modules/ , владельцем которого является root (префиксом в данном случае обычно является каталог /usr/ или /usr/local ). Это значит, что вам надо использовать sudo для глобальной установки пакетов, что может повлечь ошибки с полномочиями при разрешении сторонних зависимостей, а также создает проблему для безопасности. Изменим это:

пакетный менеджер как складской рабочий

Изменение места установки глобальных пакетов

Посмотрим, что скажет нам команда npm config .

$ npm config list ; cli configs user-agent = "npm/3.6.0 node/v5.7.0 linux x64" ; node bin location = /usr/local/bin/node ; cwd = /home/sitepoint ; HOME = /home/sitepoint ; 'npm config ls -l' to show all defaults. 

Мы получили основную информацию об установке. Теперь важно узнать место установки глобальных пакетов:

$ npm config get prefix /usr/local 

Этот префикс мы хотим изменить так, чтобы устанавливать пакеты в свой домашний каталог. Для этого создайте в домашнем каталоге папку .node_modules_global и укажите ее в качестве места установки пакетов в конфигурации:

$ cd && mkdir .node_modules_global $ npm config set prefix=$HOME/.node_modules_global 

Внеся такую небольшую правку в конфигурацию, мы изменили место для глобальной установки пакетов. Также в нашем домашнем каталоге появился файл .npmrc .

$ npm config get prefix /home/sitepoint/.node_modules_global $ cat .npmrc prefix=/home/sitepoint/.node_modules_global 

Сам npm по-прежнему установлен в каталог, владельцем которого является root. Но так как мы поменяли место установки глобальных пакетов, мы можем использовать полученное преимущество. Мы установим npm еще раз, но теперь в место, указанное нами. Заодно мы получим последнюю версию npm.

$ npm install npm --global /home/sitepoint/.node_modules_global/bin/npm -> /home/sitepoint/.node_modules_global/lib/node_modules/npm/bin/npm-cli.js /home/sitepoint/.node_modules_global/lib └── npm@3.7.5 

Наконец, нам надо добавить .node_modules_global/bin в нашу переменную окружения $PATH , чтобы мы могли запускать глобальные пакеты из командной строки. Сделаем это, добавив следующую строку в файл .profile или .bash_profile и перезапустив терминал.

export PATH="$HOME/.node_modules_global/bin:$PATH" 

Теперь командная оболочка будет сразу находить пакеты, установленные в .node_modules_global/bin и использовать корректную версию npm .

$ which npm /home/sitepoint/.node_modules_global/bin/npm $ npm --version 3.7.5 

Глобальная установка пакетов

На данный момент у нас уже есть один глобальный пакет — это сам пакет npm. Изменим это и установим еще один пакет, это будет UglifyJS (инструмент для минификации JavaScript). Для глобальной установки используется флаг —global , его можно записывать сокращенно -g .

$ npm install uglify-js --global /home/sitepoint/.node_modules_global/lib └─┬ uglify-js@2.6.2 ├── async@0.2.10 ├── source-map@0.5.3 ├── uglify-to-browserify@1.0.2 └─┬ yargs@3.10.0 ├── camelcase@1.2.1 ├─┬ cliui@2.1.0 │ ├─┬ center-align@0.1.3 │ │ ├─┬ align-text@0.1.4 │ │ │ ├─┬ kind-of@3.0.2 │ │ │ │ └── is-buffer@1.1.2 │ │ │ ├── longest@1.0.1 │ │ │ └── repeat-string@1.5.4 │ │ └── lazy-cache@1.0.3 │ ├── right-align@0.1.3 │ └── wordwrap@0.0.2 ├─┬ decamelize@1.1.2 │ └── escape-string-regexp@1.0.5 └── window-size@0.1.0 

Как вы можете видеть из вывода в консоль, у нас установлены дополнительные пакеты — это зависимости UglifyJS.

Вывод списка установленных пакетов

Мы можем вывести список глобально установленных пакетов с помощью команды npm list с опцией —global :

$ npm list --global ├─┬ npm@3.7.5 │ ├── abbrev@1.0.7 │ ├── ansi-regex@2.0.0 │ ├── ansicolors@0.3.2 │ ├── ansistyles@0.1.3 . └─┬ uglify-js@2.6.2 ├── async@0.2.10 ├── source-map@0.5.3 ├── uglify-to-browserify@1.0.2 

Такой вывод списка, со всеми зависимостями, перенасыщен. Мы можем выводить его в более читаемом виде с помощью опции —depth=0 :

$ npm list -g --depth=0 ├── npm@3.7.5 └── uglify-js@2.6.2 

Стало лучше — теперь мы видим только список установленных пакетов с номерами их версий, без зависимостей.

Теперь мы можем обрабатывать файлы JavaScript в терминале с помощью UglifyJS. Например, следующая команда сделает из файла example.js минифицированный example.min.js :

$ uglifyjs example.js -o example.min.js 

Локальная установка пакетов

Локальная установка используется в npm по умолчанию, то есть достаточно не использовать флаг —global . Пакет будет установлен в каталог node_modules родительского каталога. Создадим каталог с проектом в нашем домашнем каталоге:

$ mkdir ~/project && cd ~/project $ npm install underscore /home/sitepoint/project └── underscore@1.8.3 $ ls node_modules $ ls node_modules underscore 

Вывод списка локальных пакетов

Также как и в случае с глобальными пакетами, список локальных выводится командой npm list :

$ npm list /home/sitepoint/project └── underscore@1.8.3 

Как видите, мы можем устанавливать локальные пакеты, где угодно. Это также значит, что мы можем создать другой каталог и установить туда другую версию пакета (в нашем случае это библиотека underscore).

Удаление локальных пакетов

Так как npm это пакетный менеджер, у него есть возможность удалять пакеты. Предположим, что установленная в предыдущем примере версия underscore вызывает проблемы с совместимостью. Мы можем удалить этот пакет и поставить более старую версию.

$ npm uninstall underscore - underscore@1.8.3 node_modules/underscore $ npm list /home/sitepoint/project └── (empty) 

Установка определенной версии пакета

Теперь установим нужную версию underscore. В команде установки номер версии указывается после символа @ :

$ npm install underscore@1.8.2 /home/sitepoint/project └── underscore@1.8.2 $ npm list /home/sitepoint/project └── underscore@1.8.2 

Обновление пакета

В последней версии underscore исправили мешавший нам баг и мы хотим обновить версию этого пакета.

$ npm update underscore underscore@1.8.3 node_modules/underscore $ npm list /home/sitepoint/project └── underscore@1.8.3 

Примечание: для этой статьи, библиотека underscore была указана как зависимость в package.json (см. управление зависимостями).

Поиск пакетов

Мы уже пару раз использовали команду mkdir . Есть ли пакет node с подобным функционалом?

$ npm search mkdir npm WARN Building the local index for the first time, please be patient 

Такой пакет нашелся (mkdirp), установим его.

$ npm install mkdirp /home/sitepoint/project └─┬ mkdirp@0.5.1 └── minimist@0.0.8 

Теперь создадим файл mkdir.js :

var mkdirp = require('mkdirp'); mkdirp('foo', function (err) < if (err) console.error(err) else console.log('Directory created!') >); 

И запустим его в терминале:

$ node. mkdir.js Directory created! 

Управление кэшем

После установки пакета npm сохраняет его копию в кэше, поэтому при следующей его установке вам не нужно беспокоить сеть. Кэш хранится в каталоге .npm вашего домашнего каталога.

$ ls ~/.npm _locks minimist mkdirp registry.npmjs.org underscore 

Этот каталог со временем замусоривается старыми пакетами и иногда его полезно очищать.

$ npm cache clean 

Управление зависимостями

В нашем проекте пока только два пакета, но их количество очень быстро возрастает. Установка зависимостей вручную очень неудобна, поэтому для управления ими мы можем использовать файл package.json , расположив его в корне нашего проекта. Он генерируется с помощью команды npm init , которая выведет в консоль несколько вопросов для создания файла:

$ npm init This utility will walk you through creating a package.json file. Press ^C at any time to quit. name: (project) demo version: (1.0.0) description: Demo of package.json entry point: (index.js) test command: git repository: keywords: author: Sitepoint license: (ISC) 

В результате мы получим файл со следующим содержимым:

< "name": "demo", "version": "1.0.0", "description": "Demo package.json", "main": "main.js", "dependencies": < "mkdirp": "^0.5.1", "underscore": "^1.8.3" >, "devDependencies": <>, "scripts": < "test": "echo \"Error: no test specified\" && exit 1" >, "author": "Sitepoint", "license": "ISC" > 

Вы можете сгенерировать это файл и более простым способом, с помощью опции —yes (автоматический ответ “да” на все вопросы):

$ npm init --yes 

Файл package.json будет создан в качестве name будет использовано название каталога.

Вы также можете добавить private: true , чтобы предотвратить случайную публикацию частных репозиториев или подавления любых предупреждений при выполнении npm install . Создадим новый каталог и используем package.json для установки зависимостей.

$ mkdir ~/demo && cd ~/demo $ cp ~/project/package.json ~/demo $ npm install $ npm list demo@1.0.0 /home/sitepoint/demo ├─┬ mkdirp@0.5.1 │ └── minimist@0.0.8 └── underscore@1.8.3 

Это показывает, как просто мы можем установить пакеты, нужные нам в другом каталоге на основе нашего файла package.json . Но как поддерживать его актуальность при установке новых пакетов? Для этого используется флаг —save .

$ npm install request --save $ npm list --depth=0 demo@1.0.0 /home/sitepoint/demo ├── mkdirp@0.5.1 ├── request@2.53.0 └── underscore@1.8.3 

Наш файл package.json также обновился:

"dependencies":

Менеджеры версий

Есть пара инструментов, позволяющих использовать несколько версий Node.j на одном компьютере. Первая это n, другая — nvm(Node Version Manager). Если вас интересует эта возможность, подробнее о ней можно узнать из следующей статьи: Install Multiple Versions of Node.js using nvm.

Заключение

В этой статье освещены основы работы с npm. Я показал, как установить Node.js, как изменить место установки глобальных пакетов (так мы можем избежать использования sudo ) и как установить пакеты локально и глобально. Я также рассмотрел удаление, обновление и установку определенной версии пакета, а также управление зависимостями проекта.

В каталоге npm тысячи пакетов и их число будет расти, с учетом анонса jQuery о публикации всех плагинов как пакетов npm.

Linux npm что это

Процесс размещения пакета выглядит, как показано на Рис. 2.

Рис. 2. Процесс размещения пакета через <code publish</code></p>
<p>» /></p>
<p>Теперь детально рассмотрим работу вомбатов.</p>
<h4>1.1. Файл package.json</h4>
<p>Каждый проект в JavaScript – будь то Node.js или веб-приложение – может быть скопирован как npm-пакет с собственным описанием и файлом package.json .</p>
<p>package.json можно представить, как стикеры (список пакетов нужных версий) на npm-коробке (проект). Файл генерируется командой npm init при создании JavaScript/Node.js проекта со следующими метаданными:</p>
<ul>
<li>name : название JS библиотеки/проекта.</li>
<li>version : версия проекта.</li>
<li>description : описание проекта.</li>
<li>license : лицензия проекта.</li>
</ul>
<h4>1.2. Скрипты npm</h4>
<p>В package.json включено поле scripts для автоматизации сборки, например:</p>
<p> <img decoding=

При добавлении флага —production установятся только нужные для работы приложения зависимости из dependencies , не раздувая node_modules .

2.2. npm ci

Если npm install —production оптимален для продакшена, существует ли аналогичная команда для локальной разработки? Да, она называется npm ci .

Как и раньше, если package-lock.json еще не существует в проекте, он будет сгенерирован при вызове npm install . npm ci обращается к Lock-файлу для загрузки точной версии пакетов. Таким образом, на разных машинах набор пакетов останется неизменным.

2.3. npm audit

Чтобы избежать добавления в репозитории вредоносных пакетов , организация npm.js пришла к идее аудита экосистемы, создав модуль npm audit . Он предоставляет информацию об уязвимостях в пакетах и о существовании версий с исправлениями.

Пример аудита для пакета static-eval

Если исправления доступны в следующих версиях пакета, npm audit fix автоматически обновит версии затронутых зависимостей.

3. Размещение пакетов

Перейдем от потребления пакетов к их размещению.

3.1. npm publish

Отправить пакет в npmjs.com очень просто – нужно набрать в консоли npm publish . Важная часть, которой пренебрегают авторы – версионирование. Вот набор э мпирические правил semver.org, указывающих, когда следует увеличить номер версии:

  • Мажорная версия: когда сделаны обратно несовместимые изменения API.
  • Минорная версия: когда вы добавляете новую функциональность, не нарушая обратной совместимости.
  • Патч-версия: когда вы делаете обратно совместимые исправления.

Еще более важно следовать вышеуказанным правилам при публикации собственных пакетов, чтобы гарантировать, что вы не нарушаете чью-либо совместимость, так как по умолчанию в npm берется версия ^ (следующая младшая версия).

Заключение

В этой публикации мы познакомились со структурой npm и узнали:

  • в каких файлах хранятся данные о зависимостях ( package.json , package-lock.json ).
  • как установить пакеты в продакшен ( npm install ), на локальной машине ( npm ci ) и провести аудит пакетов ( npm audit ).
  • как добавить пакет в репозиторий ( npm publish ).

Мне нужно оперативно погрузиться во фронтенд. Какой вариант самый быстрый и качественный?

Если 15 лет назад для того, чтобы называть себя фронтенд-разработчиком достаточно было знать HTML, CSS и JavaScript, то сейчас фронтенд-разработка почти не отстает от бэкенд-разработки по количеству фреймворков и сложности стеков. Самый быстрый и качественный вариант — получить знания из первых рук от преподавателей со стажем. Поэтому мы запустили курс «Frontend Basic: принцип работы современного веба», на котором вы:

  • освоите стек технологий, который позволит начать работать в любой компании на любом проекте;
  • сверстаете свой первый адаптивный макет с учетом семантики и множества декоративных элементов на HTML и CSS;
  • поймете, как с помощью JavaScript разрабатывать пользовательские интерфейсы;
  • разберетесь, как JavaScript используется в работе с backend и создадите свой первый обмен данными сервером;
  • углубитесь в более сложную разработку на React.js и напишете свой интернет-магазин;
  • изучите основные команды для работы с GIT, важнейшего инструмента для работы в любой команде.

Источники

Что такое NodeJS и npm?

Наверняка вы уже слышали про NodeJS и возможно использовали его в каких-то тестовых или реальных проектах. NodeJS — это платформа для разработки на языке программирования Javascript, как бэкенд, так и фронтенд части. NodeJS использует движок V8. Но зачем использовать Javascript еще где-то, кроме как в браузере?
Дело в том, что язык Javascript служит не только для того, чтобы сделать выпадающие меню и мигание кнопочек, как это было задумано изначально, в далеком 1995 году. Прошло уже больше 20 лет и развитие Javascript не стояло на месте. У языка Javascript появилось очень много возможностей и писать различные скрипты достаточно удобно на современном Javascript, а благодаря менеджеру пакетов npm жизнь frontend и backend разработчиков стала лучше.

Смотрите видео Что такое NodeJS и NPM

Что такое npm?

NPM — это менеджер пакетов, которые вы можете подключить в ваш проект. Например, если вы хотите, чтобы ваш проект использовал Bootstrap, вам необязательно вручную копировать все необходимые файлы с сайта Bootstrap и хранить эту библиотеку в репозитории GIT, достаточно указать в конфигурационном файле вашего проекта одной строчкой, что вам нужен Bootstrap и пакетный менеджер npm установит Bootstrap в копию вашего проекта, при этом нет нужны хранить все подобные библиотеки в репозитории GIT вашего проекта. И если вы разрабатываете проект группой разработчиков, для разворачивания вашего проекта у себя на компьютере, достаточно будет запустить одну команду и все необходимые зависимости, такие как фреймворк Bootstrap, различные библиотеки скачаются в проект автоматически. С помощью менеджера npm можно добавить в ваш проект огромное количество всевозможных библиотек и инструментов и в следующих уроках я покажу как установить NodeJS и пользоваться менеджером пакетов npm, а также покажу как создаются современные frontend приложения. Также легко, как подключение Bootstrap к вашему проекту через NPM, вы можете подключить и BabelJS, для того, чтобы у вас была возможность писать код вашего приложения на современном Javascript. Смотрите все уроки по NodeJS и NPM в курсе Modern Javascript Успехов в обучении! С уважением, Сергей Никонов

  • Интерактивные уроки и курсы программирования и создания сайтов (дистанционное обучение) помогут вам в игровой форме изучить основы языков программирования веб-разработки и веб-программирования с нуля. Обучение онлайн 24/7.

Что такое npm и зачем он нужен

Что такое npm и зачем он нужен

Node.js — платформа, с помощью которой создают серверные приложения на JavaScript. В ее основе — модульная система, которая позволяет подтягивать отдельные пакеты в приложение.

Для управления зависимостями в Node.js используют Node Package Manager (npm). Он загружает и устанавливает необходимые для проекта модули из сторонних источников.

Рассказываем, как работать с npm.

Инициализация и установка пакетов

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

Частота скачиваний за неделю (Weekly Downloads) и количество зависимостей (Dependents) свидетельствуют о надежности пакета — чем их больше, тем чаще его используют разработчики.

Также информацию о пакете можно посмотреть с помощью команды в терминале:

Для инициализации проекта введите npm init

Эта команда запрашивает у разработчика основную информацию о проекте и генерирует package.json на основе ответов. В этом файле хранится информация о проекте и его зависимостях.

курс по теме: Алгоритмы и структуры данных
Артем Верещака Tech Lead в Bolt

Этап с вопросами можно пропустить с помощью npm init -y. Пакеты загружаются командой npm install или, сокращенно, npm i. Если в вашем проекте уже есть package.json, подтянутся модули, которые в нем указаны. Если пакет не был прописан в package.json, нужно написать его название после команды:

Пакеты можно подтягивать не только по имени, но и по ссылке:

В конце команд можно добавлять флаги, которые модифицируют их выполнение. Например, добавить зависимость в package.json:

По умолчанию пакеты устанавливаются в директорию node_modules в папке проекта. Также доступна установка в глобальное хранилище на ПК. Например, на Windows — в папку AppData на диске с операционной системой. Для этого нужно добавить флаг:

Пакеты можно обновить до последней версии с помощью команды npm update

статьи по теме:

Рассказывает FullStack Developer (React/Node.js) в SoftServe.

Что нужно, чтобы стать фулстеком.

Версионность npm

Иногда новый пакет некорректно работает с другими зависимостями или может содержать ошибки. Чтобы это исправить, можно установить более раннюю версию. Выделяют три группы версий:

  • MAJOR — пакет, в котором код и логика существенно отличается от предыдущих, например, был заменен ключевой класс. Версия 3.0.0 будет существенно отличаться от 2.0.0.
  • MINOR — пакет, в который просто был добавлен новый функционал, например, 3.1.0 расширяет 3.0.0.
  • PATCH — тут только вносились патчи и фиксы. Если нам нужно будет внести фикс в 3.1.0, то мы назовем версию 3.1.1.

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

Для установки конкретной версии используется команда с указанием версии после @:

Добавление флага —save-exact установит и добавит последнюю версию в package.json. Таким же способом можно откатиться до необходимой.

Скрипты и тесты

package.json содержит не только общую информацию о проекте и зависимостях, но и скрипты, которые разработчики используют для сборки приложений, запуска линтеров, тестов. Польза скриптов в том, что они позволяют не запоминать длинные последовательности команд. Скрипты находятся в разделе scripts и содержат название и сами команды:

"scripts": < "build": "npm run build:node && npm run build:browser", "build:browser": "rollup -c config/rollup.browser-config.js", "build:node": "rollup -c config/rollup.node-config.js", "clean": "git clean -fdxe node_modules", "lint": "eslint src/", "start": "node -i -e 'YAML=require(\"./dist/index.js\")'", >

Например, скрипт lint запускает линтер для директории src. Для запуска скриптов используется команда:

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

Если вы забыли нужную команду или доступные для нее флаги, вы можете ввести:

Также доступна документация с описанием всех команд и флагов для различных версий npm.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *