Моя статья охватывает самые фундаментальные аспекты диспетчера пакетов узлов (NPM) и package.json. Если вы считаете, что уже хорошо разбираетесь в этой теме, пожалуйста, остановитесь здесь ❌.
В мире JavaScript вы найдете его почти в каждой базе кода: package.json. Как новичок, вы, вероятно, уже знаете, что это важный файл. Но какова его настоящая цель? Как это происходит? И почему вы вообще должны об этом заботиться?
Вот самые важные факты о таинственном файле 👽.
1) Ничего страшного!
Вот так: package.json - это просто текстовый файл, содержащий общую конфигурацию вашего пакета npm в формате JSON.
Как новичок, вы, скорее всего, впервые столкнулись с package.json на уровне приложения (например, при настройке приложения React). Вообще говоря, каждый пакет NPM определяется файлом package.json. Не только ваше приложение считается пакетом, но и все его зависимости.
Давайте посмотрим 👀 на типичный package.json примера приложения React:
{ "name": "react-app", "version": "0.0.0", "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test" }, "dependencies": { ... }, "devDependencies": { ... } }
В более крупных проектах конфигурация на первый взгляд может показаться сложной. Но обычно вам не нужно особо заботиться ни о чем, кроме скриптов, зависимостей и devDependencies (по крайней мере, в начале) . Мы расскажем о них позже.
Хорошие новости 👍: вам не нужно начинать с пустой страницы. Файл обычно создается инструментами фреймворка (например, create-response-app, ng new) или создается вручную с помощью следующей команды:
npm init
В мастере инициализации вам будет предложено несколько вопросов относительно имени пакета, версии, автора и так далее. В конце концов, ваш package.json наконец создан и заполнен заданными данными.
2) Он содержит зависимости вашего проекта
Основная задача NPM как менеджера пакетов для модулей JavaScript - обрабатывать зависимости вашего проекта.
В каждом package.json есть два типа зависимостей. Обычные зависимости являются частью вашего производственного приложения. Допустим, вы используете @ material-ui / core для полей формы. Пакет будет использоваться во время разработки, но, конечно, также и каждым конечным пользователем.
Напротив, devDependencies используются только во время разработки. Вы не найдете эти пакеты в своем связанном коде. Таким образом, они также не замедлят работу вашего производственного приложения. Обычно devDependencies - это такие инструменты, как фреймворки для тестирования, сборщики модулей и транспилеры. 🔨
Каждый раз, когда вы запускаете npm install [package] и добавляете флаг save, зависимость загружает ботов и добавляет их в ваш package.json:
npm install @material-ui/core --save npm install jest --save-dev
Сохранив установленные пакеты 💾, члены вашей команды могут позже легко извлечь все вновь добавленные зависимости, запустив:
npm install
3) Он определяет доступные скрипты
Как вы уже заметили выше, у приложений обычно есть очень важное свойство, называемое scripts в их package.json :
"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test" },
Обычно вы используете эти сценарии 🛠 для подготовки вашего приложения к производству. Например, вы можете отлаживать свой код: start обычно запускает локальный сервер разработки, а test запускает вашу среду тестирования. Кроме того, вы будете использовать build для создания своего приложения (транспиляция, минификация…).
Ключ свойства (например, build) - это имя сценария NPM. Соответствующее значение (response-scripts build) - это команда командной строки, которая запускается при запуске скрипта. Таким образом, следующие команды делают то же самое:
> npm run build > react-scripts build
Вы можете спросить: Почему нельзя просто запустить последнее, я почти не сохраняю письма? В этом случае вы поняли. Но что вы думаете об этом нестандартном сценарии? Вы действительно хотите вводить это в свой терминал вручную каждый раз, когда вам нужно его запускать?
"lint": "eslint './src/**/*.{ts,tsx}'"
Конечно нет! 👿
И многое другое…
Надеюсь, вы получили первое впечатление о том, что такое package.json и почему вам определенно стоит узнать о нем больше.