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

Node Package Manager или NPM — это основной менеджер пакетов для JavaScript и Node.js, он состоит из двух основных элементов: CLI и онлайн-репозитория.

  • CLI — это интерфейс команд, который позволяет программистам использовать и публиковать пакеты.
  • Онлайн-репозиторий, в котором хранятся пакеты, представляет собой большую библиотеку.

Если было непонятно, представьте репозиторий как магазин, который получает пакеты от отраслей (авторов пакетов) и доставляет их клиентам (пользователям пакетов).

Пакет.json

Одним из компонентов, присутствующих в использовании пакета, является package.json, основная функция этого файла — описать основную информацию о вашем проекте.

Когда вы запустите код «npm init» в терминале, он будет создан.

Эти вещи будут частью пакета:

  • name, это буквально название вашего проекта.
  • версии, это мало используется, потому что нет причин контролировать версию библиотеки с открытым исходным кодом.
  • описание, в основном описание проекта.
  • license, это лицензия вашего проекта, но только если она вам нужна.
  • main, основной файл JS, обычно имя этого файла «main.js».

npm-скрипты

Package.json также поддерживает некоторые скрипты, которые можно запускать локально в вашем терминале. Например:

"scripts": {
    "build": "tsc",
    "format": "prettier --write **/*.ts",
    "format-check": "prettier --check **/*.ts",
    "lint": "eslint src/**/*.ts",
    "pack": "ncc build",
    "test": "jest",
    "all": "npm run build && npm run format && npm run lint && npm run pack && npm test"
  }

Скрипты eslint, prettier, ncc и jest устанавливаются локально в вашу папку node_modules. Можно создавать любые сценарии, даже определенный код, который вы используете для запуска своего проекта, например, как веб-пакет.

Чтобы запустить эти скрипты, вам нужно использовать npm run (название скрипта).

Зависимости e devDependencies

Они приходят как ключи в package.json, ваши значения — это имена библиотек, которые являются зависимостями, которые будут использоваться. Например:

{
"dependencies": {
"@actions/core": "^1.2.3",
    "@actions/github": "^2.1.1"
  },
  "devDependencies": {
    "@types/jest": "^25.1.4",
    "@types/node": "^13.9.0",
    "@typescript-eslint/parser": "^2.22.0",
    "@zeit/ncc": "^0.21.1",
    "eslint": "^6.8.0",
    "eslint-plugin-github": "^3.4.1",
    "eslint-plugin-jest": "^23.8.2",
    "jest": "^25.1.0",
    "jest-circus": "^25.1.0",
    "js-yaml": "^3.13.1",
    "prettier": "^1.19.1",
    "ts-jest": "^25.2.1",
    "typescript": "^3.8.3"
  }
}

Они устанавливаются с помощью npm install--save (в случае зависимостей) или npm install --save-dev (в случае devDependencies).

Зависимости связаны с производством, пакеты, которые будут поддерживаться даже в части реализации. DevDependencies — это зависимости, которые будут использоваться только при разработке, например, babel-loader.

Одна из утилит для их разделения предназначена для удаления тех, которые не будут использоваться в развертывании.

Пакет-lock.json

Этот файл похож на этикетку с ингредиентами на упаковке продукта. Так вот, как не читай эти лейблы, не надо читать package-lock, только если нужно устранить какую-то конкретную ошибку.

Он создается при использовании npm i

Шрифты: https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/