На языке Node.js нет существенной разницы между пакетами и модулями. Пакеты - более глубокая абстракция на основе модулей. Пакеты инкапсулируют определенную независимую функцию для выпуска, обновления, управления зависимостями и контроля версий. Node.js реализует механизм пакета в соответствии с спецификацией CommonJS и разрабатывает NPM для решения потребностей выпуска и приобретения пакета.
Пакет Node.js - это каталог, содержащий пакет файла файла файла пакета. JSON в формате JSON. Пакет Node.js в основном следует спецификации CommonJS, поэтому он имеет следующие характеристики:
Функции пакета определяются спецификацией CommonJS:
1) каталог верхнего уровня содержит файл package.json;
2) каталог бин хранит двоичные файлы;
3) Lib Directory хранит файлы JavaScript;
4) DOC Directory хранят документы;
5) Тестовый каталог хранит модульные тесты.
Модуль и файл Node.js соответствуют одному. Файл может быть не только исходным файлом JavaScript или бинарным файлом, но и каталогом. Самый простой пакет - это модуль каталогов.
Пакет Node.js обычно представляет собой набор некоторых модулей, который обеспечивает абстракции более высокого уровня на основе модулей, что эквивалентно предоставлению некоторых фиксированных функциональных библиотек интерфейса.
Настраивая Package.json, мы можем создать более сложные, более полные и более стандартизированные пакеты для публикации.
Когда Node.js вызывает пакет, он сначала проверяет основное поле файла Package.json в пакете и использует его в качестве модуля интерфейса пакета. Если основное поле файла package.json не существует, node.js попытается найти index.js или index.node в качестве интерфейса пакета.
Файл Package.json - это файл, используемый спецификацией CommonJS для описания пакета. Файл Package.json, который полностью соответствует спецификации, должен содержать следующие поля:
1) Имя: Имя пакета. Имя пакета уникальное и состоит из строчных букв, цифр и подчеркиваний, и не может содержать пробелов.
2) Описание: Описание пакета. Краткое описание пакета.
3) Версия: номер версии. Строка версии, которая соответствует спецификации распознавания семантической версии.
4) Ключевые слова: массив ключевых слов, обычно используемые для поиска.
5) Содействия: Аппезиты массивы. Каждый элемент содержит имя, электронная почта (необязательно) и веб -(необязательные) поля.
6) Авторы: множество участников. Формат такой же, как и массив сопровождающих. Автор пакета должен быть первым элементом массива участников.
7) Ошибки: Адрес для отправки ошибки может быть URL -адресом или адресом электронной почты.
8) Лицензии: массив лицензий. Каждый элемент должен содержать поля типа (имя лицензии) и URL (адрес, связанный с текстом лицензии).
9) Репозитории: массив адресов хостинга хранилища. Каждый элемент должен содержать тип (тип репозитория, такой как GIT), URL (адрес репозитория) и путь (необязательно по отношению к пути репозитория).
10) Зависимости: зависимости от пакета. это ассоциативный массив, состоящий из имени пакета и номера версии.
Примечание. Спецификация «Распознавание семантической версии» представляет собой набор спецификаций именования версий, предложенных зарубежными странами. Первоначальная цель состояла в том, чтобы решить различные задачи сравнения размеров номера версии и в настоящее время принята многими системами управления пакетами.
Вот пример Package.json, который полностью соответствует спецификации CommonJS:
Кода -копия выглядит следующим образом:
{
"Имя": "TestPackage",
«Описание»: «Мой пакет для CommonJS».
"Версия": "0.1.0",
"Ключевые слова": [
"TestPackage",
"liq"
],
"Содействия": [
{
"имя": "liq",
«Электронная почта»: «[email protected]»,
}
],
«Аборморы»: [
{
"имя": "liq",
"Web": "http://blog.csdn.net/chszs"
}
],
"ошибки": {
"Mail": "[email protected]",
"Web": "http://blog.csdn.net/chszs"
},
«Лицензии»: [
{
"Тип": "Apache License v2",
"URL": "http://www.apache.org/licenses/apache2.html"
}
],
«Репозитории»: [
{
"Тип": "git",
"URL": "http://github.com/chszs/packageTest.git"
}
],
"Зависимости": {
"Webkit": "1.2",
"SSL": {
"Gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}