Главная » Хабрахабр » [Из песочницы] node.js serverside — работа над ошибками. Часть 1

[Из песочницы] node.js serverside — работа над ошибками. Часть 1

## name
Пока мы не публикуем пакет в репозитории, поле можно и «зюками» забить. Вопрос в том, что это поле удобно использовать для именования файла инсталляции или, например, для показа имени продукта на его веб-странице. В общем «как вы яхту назовёте,..»

0. ## version
Основная идея — не забывать увеличивать номер версии при расширении функциональности, исправлении ошибок,… К сожалению, у нас в конторе ещё можно встретить продукты с неизменной версией 0. А потом поди догадайся, какая именно функциональность работает у клиента… 0.

Если пакет используется в качестве зависимости, то какой файл будет импортирован при использовании нашего модуля другим приложением. ## main
Это поле сообщает, какой файл будет запущен при старте нашего приложения (`npm start`). Текущим каталогом считается каталог, где находится файл `package.json`.

А ещё, если мы, например, используем vscode, то файл, указанный в этом поле, будет запущен при вызове отладчика или при запуске команды «выполнить».

Это скорее следствие всех возможных вариантов использования, поэтому в документации напрямую не прописано. Расширение ".js" может быть опущено.

## engines
Это поле содержит кортеж:

Они определяют версии `node.js` и `npm`, необходимые для работы нашего приложения. Мне известны поля «node» и «npm». Версии проверяются при выполнении команды «npm install».

При наличии префикса, версия должна быть больше или равна указанной в этом поле. Поддерживается стандартный синтаксис определения версий пакетов зависимостей: без префикса (единственная версия), префикс "~" (два первых числа версии должны совпадать) и префикс "^" (только первое число версии должно совпадать).

В данном случае речь идёт об Azure. Некоторые контейнеры, как минимум в документации, пишут, что подходящие версии будут использованы по умолчанию.

11", // require node version 8. Пример:
```javascript
«engines»: {
«node»: "~8. 11. 11.* starting from 8. 0. 0
«npm»: "^6. 0. 1" // require npm version 6.* starting from 6. 1
},
```

### очередные «грабли»

А король-то голый!

С клиентом было неоднократно оговорено, что требуемая версия `node.js` должна быть не меньше 8. При поставке начальных версий приложения всё работало. «В один прекрасный день» после поставки новой версии у клиента приложение перестало запускаться. В наших тестах всё работало.

Поле «engines» не было заполнено, поэтому раньше никто не замечал, что у клиента была установлена древняя версия node.js. Проблема была в том, что в этой версии мы стали использовать функциональность, которая поддерживалась только, начиная с версии 8 node.js. (Azure web services default).

## scripts
Поле содержит кортеж вида { «script1»: *script1*, «script2»: *script2*,… }

Например скрипт «install» выполнится после отработки «npm install». Существуют стандартные скрипты, которые выполняются в той или иной ситуации. Или, скажем, для архивирования всех статических файлов, доступных через наш веб-сервис, чтобы их не приходилось сжимать налету. Очень удобно, например, чтобы проверить наличие программ, необходимых для работы приложения.

Для того, чтобы выполнить произвольный скрипт, нужно запустить «npm run *script-name*». При этом можно не ограничиваться только стандартными именами.

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

Пример:
```javascript
«scripts»: {
«install»: «node scripts/install-extras»,
«start»: «node src/well/hidden/main/server extra_param_1 extra_param_2»,
«another-script»: «node scripts/another-script»
}
```

S. P. Расширение ".js" можно в большинстве случаев опускать.


Оставить комментарий

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

*

x

Ещё Hi-Tech Интересное!

[Перевод] Учебный курс по React, часть 1: обзор курса, причины популярности React, ReactDOM и JSX

Представляем вашему вниманию первые 5 занятий учебного курса по React для начинающих. Оригинал курса на английском, состоящий из 48 уроков, опубликован на платформе Scrimba.com. Возможности этой платформы позволяют, слушая ведущего, иногда ставить воспроизведение на паузу и самостоятельно, в том же ...

[Перевод] Разбираем лямбда-выражения в Java

Мы открыли его для себя совсем недавно, но уже по достоинству оценили его возможности. От переводчика: LambdaMetafactory, пожалуй, один из самых недооценённых механизмов Java 8. 0 фреймворка CUBA улучшена производительность за счет отказа от рефлективных вызовов в пользу генерации лямбда ...