JavaRush /Курсы /Модуль 4: Node.js, Next.js и Angular /package.json — создание, основные поля, init, npm install...

package.json — создание, основные поля, init, npm install

Модуль 4: Node.js, Next.js и Angular
1 уровень , 3 лекция
Открыта

1. Что такое package.json и зачем он нужен

Если бы проекты на Node.js были людьми, то package.json был бы их паспортом, резюме и списком контактов одновременно. Это главный файл любого npm-проекта, в котором хранится информация о проекте, его зависимостях, скриптах и многом другом.

Когда вы открываете любой проект на Node.js, первым делом ищите package.json — именно здесь описано всё самое важное: как этот проект называется, какая у него версия, какие пакеты он использует, какие команды можно запускать и даже кто его автор.

Для чего нужен package.json?

  • Описывает проект: имя, версию, описание и прочие метаданные.
  • Хранит список зависимостей — тех самых библиотек, без которых проект работать не будет.
  • Позволяет запускать скрипты через npm run (например, npm run start).
  • Определяет, какие файлы входят в пакет при публикации.
  • Позволяет другим разработчикам быстро развернуть проект: достаточно скачать код и выполнить одну команду — npm install.

Без package.json ваш проект — как чемодан без ручки: вроде и есть, но пользоваться неудобно.

2. Как создать package.json — вручную и автоматически

Вариант 1: вручную (не рекомендуем, но вдруг)

Можно создать файл package.json руками и написать в нём что-то вроде:

{
  "name": "my-awesome-project",
  "version": "1.0.0"
}

Но это примерно как вручную писать HTML-документ без редактора — скучно и легко ошибиться. К тому же, вы рискуете забыть важные поля или допустить опечатку.

Вариант 2: автоматически — команда npm init

Правильный путь современного разработчика — использовать npm!

Откройте терминал в папке вашего проекта и выполните:

npm init

Вас спросят про имя проекта, версию, описание, точку входа (обычно index.js), команду для тестирования, репозиторий, ключевые слова, автора и лицензию. После этого будет создан полноценный package.json.

Если вы не любите долгие опросы, есть команда для "ленивых":

npm init -y

Флаг -y (или --yes) автоматически отвечает на все вопросы стандартными значениями. В результате вы сразу получите рабочий package.json — его всегда можно отредактировать позже.

Пример результата

{
  "name": "my-awesome-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

3. Основные поля package.json: что значат и зачем нужны

Давайте разберёмся, что означают все эти загадочные поля и зачем они нужны.

Поле Описание Пример
name
Имя вашего проекта или пакета (только маленькие буквы, без пробелов)
"name": "my-app"
version
Версия проекта (семантическая: major.minor.patch)
"version": "1.0.0"
description
Краткое описание
"description": "ToDo app"
main
Главный файл (точка входа для require/import)
"main": "index.js"
scripts
Набор команд (скриптов), которые можно запускать через npm run см. ниже
keywords
Ключевые слова для поиска
"keywords": ["todo"]
author
Автор проекта
"author": "Иван Иванов"
license
Лицензия проекта
"license": "MIT"
dependencies
Список зависимостей, нужных для работы см. ниже
devDependencies
Зависимости только для разработки (тесты, линтеры и т.д.) см. ниже
repository
Ссылка на репозиторий (GitHub и т.д.) см. ниже

Скрипты (scripts)

Это то, что превращает ваш проект из "кучи файлов" в "настоящий проект". Здесь можно прописать команды, которые потом удобно запускать.


"scripts": {
  "start": "node index.js",
  "test": "echo \"No tests yet!\""
}

Теперь можно запускать:

npm run start
npm run test

(Если скрипт называется start или test, можно даже писать просто npm start или npm test.)

Зависимости (dependencies и devDependencies)

  • dependencies — библиотеки, которые нужны для работы вашего приложения (например, express, react, lodash).
  • devDependencies — нужны только для разработки (например, eslint, prettier, nodemon).

После установки зависимостей они появляются в соответствующем разделе. Подробнее — чуть позже.

Пример полного package.json

{
  "name": "todo-app",
  "version": "1.0.0",
  "description": "Простое приложение для списка дел",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Нет тестов!\""
  },
  "keywords": ["todo", "tasks", "nodejs"],
  "author": "Иван Иванов",
  "license": "MIT",
  "dependencies": {
    "express": "^4.18.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.22"
  }
}

4. Добавление и установка зависимостей: npm install

Как добавить новую зависимость

Допустим, вы хотите использовать фреймворк Express. Просто выполните:

npm install express

Что произойдёт:

  • В папке появится папка node_modules (если её не было).
  • В package.json появится раздел "dependencies", если его не было.
  • В файл package-lock.json запишется точная версия установленного пакета (об этом позже).
  • Express будет добавлен в проект, и вы сможете его использовать.

Установка зависимостей только для разработки

Некоторые пакеты нужны только для разработки (например, nodemon для автоматического перезапуска сервера):

npm install --save-dev nodemon

или коротко:

npm i -D nodemon

Теперь nodemon попадёт в раздел "devDependencies".

Установка всех зависимостей

Если вы скачали чужой проект с GitHub, не нужно вручную устанавливать каждый пакет. Просто выполните:

npm install

npm посмотрит на ваш package.json и установит всё, что там указано.

5. Практика: создаём свой package.json и устанавливаем зависимости

Давайте вместе создадим мини-проект и добавим в него зависимости.

  1. Создаём папку проекта
    mkdir my-first-node-app
    cd my-first-node-app
    
  2. Инициализируем npm
    npm init -y
    

    Появился package.json — отлично!

  3. Устанавливаем Express
    npm install express
    

    В package.json появился раздел "dependencies", а в папке проекта — папка node_modules (не пугайтесь, она может быть ОГРОМНОЙ — это нормально).

  4. Устанавливаем nodemon для разработки
    npm install --save-dev nodemon
    

    Теперь и "devDependencies" заполнен.

  5. Добавляем скрипты

    Откройте package.json в редакторе и добавьте:

    
    "scripts": {
      "start": "node index.js",
      "dev": "nodemon index.js"
    }
    

    Теперь можно запускать сервер в режиме разработки так:

    npm run dev
    

6. Полезные нюансы

package-lock.json — что это и зачем нужен

После первой установки зависимостей у вас появится ещё один файл: package-lock.json. Это как "замок" на вашей коробке с инструментами — он фиксирует точные версии всех установленных пакетов и их зависимостей, чтобы у всех разработчиков проект работал одинаково.

  • Не редактируйте этот файл вручную.
  • Не добавляйте его в .gitignore (если только вы не любите хаос и неожиданные баги).

Как устроена установка пакетов: node_modules, зависимости, версии

  • Все пакеты физически устанавливаются в папку node_modules.
  • В package.json указывается только "основная" версия (например, "^4.18.2"), а в package-lock.json — точная версия (например, "4.18.2").
  • Если удалить папку node_modules, достаточно снова выполнить npm install — всё восстановится.

8. Типичные ошибки при работе с package.json и npm

Ошибка №1: Редактирование node_modules вручную.
Не надо! Это папка для npm, а не для человека. Все изменения тут исчезнут после следующей установки зависимостей.

Ошибка №2: Случайное удаление package.json.
Если вы потеряете этот файл, проект перестанет быть проектом. Восстановить его вручную — мучительно.

Ошибка №3: Забыли добавить зависимость через npm, а просто скопировали строчку в package.json.
Так делать нельзя — нужно всегда использовать npm install. Просто прописать "express": "^4.18.2" — этого мало, нужно чтобы пакет реально скачался.

Ошибка №4: Не обновляете зависимости.
Иногда стоит выполнять npm outdated и npm update, чтобы не остаться на древних версиях библиотек.

Ошибка №5: Не добавили package-lock.json в git.
Это может привести к "работает у меня, а у тебя — нет". Всегда коммитьте этот файл!

Ошибка №6: Конфликт имён или опечатки в package.json.
Имя пакета должно быть уникальным и не содержать пробелов или заглавных букв. Например, my app — не подойдёт, а вот my-app — отлично.

Ошибка №7: Смешивание зависимостей для продакшена и разработки.
Не ставьте линтеры, тестовые библиотеки и прочее в обычные зависимости — используйте --save-dev.

1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 3 лекция
Недоступна
Добавление зависимости и проверка package.json
Добавление зависимости и проверка package.json
1
Задача
Модуль 4: Node.js, Next.js и Angular, 1 уровень, 3 лекция
Недоступна
Добавление скрипта запуска и dev-зависимости
Добавление скрипта запуска и dev-зависимости
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ