Kodokon kodokon.com

Модули ES и npm: организуем проект

Ты структурируешь проект на Node с помощью package.json, модулей ES, зависимостей npm и скриптов.

9 мин · 3 вопросов

Открыть этот урок в Kodokon

Настоящий проект не помещается в один файл: его разбивают на модули - файлы, которые экспортируют то, что предлагают, и импортируют то, что им нужно. Синтаксис import / export ты уже знаешь по направлению JavaScript; посмотрим, как его включить в Node. Всё начинается с package.json - удостоверения личности твоего проекта: файла в формате JSON, который описывает его имя, версию и настройки. Чтобы его создать, перейди в пустую папку и выполни npm init -y (опция -y принимает все ответы по умолчанию). Затем добавь строку "type": "module": она сообщает Node, что твои файлы .js используют модули ES.

JSON
{
  "name": "my-project",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node main.js",
    "dev": "node --watch main.js"
  }
}
Твой package.json после npm init -y, дополненный строкой type и двумя скриптами, которые мы используем ниже.

Создадим в этой папке два файла: math.js экспортирует функцию, main.js её импортирует. Особенность, характерная именно для Node: импорт локального файла должен начинаться с ./ и заканчиваться расширением .js. И то и другое обязательно, в отличие от того, что допускают некоторые веб-инструменты.

JAVASCRIPT
// math.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from "./math.js";

console.log(add(2, 3));
Два отдельных файла. Запусти node main.js: появится результат 5.

Главная сила npm - это его всемирная библиотека пакетов: код, написанный другими и готовый к использованию. Команда npm install скачивает пакет в папку node_modules твоего проекта и добавляет его в раздел dependencies файла package.json - список пакетов, которые нужны проекту для работы. Файл package-lock.json, создаваемый автоматически, записывает точные установленные версии, чтобы у всех получалось одно и то же. Попробуем на chalk - пакете, который раскрашивает текст, выводимый в терминал.

BASH
npm install chalk
После этой команды chalk появляется в dependencies и в node_modules; дальше ты можешь импортировать его как любой модуль.

Последний столп: скрипты npm - сокращения для команд, объявленные в разделе scripts файла package.json. npm run dev выполняет команду, сохранённую под именем dev, какой бы длинной ни была настоящая команда. Наш скрипт dev использует node --watch - опцию, которая автоматически перезапускает программу при каждом изменении файла: очень удобно во время разработки.

BASH
npm run start
npm run dev
Каждая команда запускает одноимённый скрипт. Останови режим watch через Ctrl+C.

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. Какова роль файла package.json?
    • Описывать проект: имя, версию, скрипты и зависимости
    • Содержать основной JavaScript-код проекта
    • Хранить код скачанных пакетов
    • Заменять папку node_modules
  2. Что происходит, когда ты выполняешь npm install chalk?
    • chalk копируется прямо в твой файл main.js
    • chalk только скачивается, не оставляя следов
    • chalk помещается в node_modules и добавляется в dependencies
  3. Зачем добавлять в package.json строку type module?
    • Чтобы npm устанавливал пакеты быстрее
    • Чтобы Node читал файлы .js как модули ES (import/export)
    • Чтобы автоматически опубликовать проект в npm