package.json
. Эта статья познакомит вас с файлом package.json. Надеюсь, она будет вам полезна! Понимание package.json
В корневом каталоге каждого проекта (пакета, загруженного из npm или других проектов nodejs) обычно находится файл package.json, который определяет различные модули, необходимые для проекта, а также информацию о конфигурации проекта ( Метаданные, такие как имя, версия, лицензия, способы запуска проекта, запуска скриптов и т. д.). Команда npm install
автоматически загружает необходимые модули на основе этого файла конфигурации.
Файл package.json
— это объект JSON, и каждый член объекта — это настройка текущего проекта. Например, name
— это имя проекта, version
— версия (в формате «основная версия.дополнительная версия.дополнительная версия»). Он также будет играть несколько ролей в жизненном цикле проекта, включая разработку, тестирование и онлайн-версии.
package.json функционирует
Как создать package.json
1. Используйте клиентский интерфейс командной строки
npm init.
Это запустит анкету командной строки, которая создаст package.json
в каталоге, где вы запустили команду.
Вход для внешнего интерфейса (vue) в курс повышения квалификации: начало обучения
2. Создание значения по умолчанию.
Чтобы получить значение по умолчанию package.json
, запустите npm init
с флагом --yes
или -y
:
npm init -y
Этот метод будет использовать package.json
из текущего. Информация, извлеченная из каталога, генерирует значения по умолчанию, пропуская этап ответов на вопросы.
3. Вручную создайте
новый файл package.json непосредственно в корневом каталоге проекта, а затем введите соответствующее содержимое. Подробности см. в примечаниях к package.json ниже.
Подробное объяснение общих полей в файлах package.json
1. Имя
— это обязательное поле, которое представляет собой имя текущего модуляпакета. Длина должна быть меньше или равна 214 символам. Оно не может начинаться с «.» ) или «_» (подчеркивание) и не может содержать заглавные буквы.
Это имя можно передать в качестве параметра функции require(), поэтому оно должно быть коротким, но при этом иметь смысл.
2. Версия
— обязательное поле, номер версии текущего пакета, по умолчанию —
1.0.0
при первом создании.
версия должна быть разрешима модулем node-semver, от которого зависит npm. Определяет ход итерации версии текущего проекта. (Следуйте формату «основная версия. дополнительная версия. дополнительная версия»).
Возможно, многие друзья сейчас не обращают внимания или не заботятся о номере версии и предпочитают использовать номер версии продукта или git. метод хэш-кода.
3. Необязательное поле описания
должно быть строкой. Информация описания текущего пакета представляет собой строку. Это помогает людям найти пакет при использовании поиска npm.
Если в package.json нет информации description
, npm использует первую строку README.md в проекте в качестве информации описания. Эта информация описания поможет другим найти ваш проект, поэтому рекомендуется правильно писать description
.
4. Главное
необязательное поле указывает входной файл для загрузки проекта.
Значением по умолчанию для этого поля является index.js
в корневом каталоге модуля.
5.
Необязательное поле
scripts
— это хеш-объект, состоящий из команд сценария. Они выполняются в разных жизненных циклах пакета. Ключом является событие жизненного цикла, а значением — команда, которую необходимо выполнить. Указывает сокращение командной строки npm для запуска команды сценария. Например, start указывает команду, которая будет выполняться при запуске npm run start. Мы можем настроить команду, которую хотим запустить скрипт.
Ссылка: http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
Скрипт выполнения конфигурации конфигурации
1) Выполните команду echo xxx,
Почему он может быть выполнен?
Когда я запускаю npm run, автоматически создается новая оболочка, и указанная команда сценария будет выполнена в этой оболочке. Следовательно, если команду можно запустить в Shell (обычно Bash), ее можно записать в скрипте npm. также скопирует node_modules/.bin из текущего каталога в путь текущей системы (это лишь временная копия. После завершения выполнения переменная PATH будет восстановлена в исходное состояние), поэтому все скрипты в node_modules /.bin подкаталог текущего каталога. Все можно вызвать напрямую, используя имя сценария, без добавления пути.
Например:
если мы используем node для выполнения службы node.js, node + 文件
может использовать node server.js
, мы также можем использовать webpack для упаковки файла внешнего интерфейса, webpack-dev-server
. Конечно, webpack и. webpack-dev-server необходимо установить Зависимые модули
: { "build": "webpack --mode=разработка", "dev": "webpack-dev-server --mode=development --contentBase=./dist", "server":"узел app.js" }
Мы вводим npm run server
в инструмент командной строки, и будет вызван узел app.js, который поможет нам его запустить.
Краткая форма:
npm start — это запуск npm. npm stop — это сокращение от npm run stop. npm test — это сокращение от npm run test. npm restart — это сокращение от npm run stop && npm run restart && npm run start.
Часто используемые скрипты ----- Передача онлайн-коллекции
// Удалить каталог "clean": "rimraf dist/*", // Создаем локальную службу HTTP: "http-server -p 9090 dist/", //Открываем браузер "open:dev": "opener http://localhost:9090", //Обновляем "livereload" в реальном времени: "live-reload --port 9091 dist/", // Создаем HTML-файл "build:html": "jade index.jade > dist/index.html", // Пока файл CSS изменяется, повторно выполните сборку "watch:css": "watch 'npm run build:css' assets/styles/", // Пока файл HTML изменяется, повторно выполните сборку "watch:html": "watch 'npm run build:html' assets/html", //Развертывание на Amazon S3 "deploy:prod": "s3-cli sync ./dist/ s3://example-com/prod-site/", //Создаем значок "build:favicon": "узловые скрипты/favicon.js", "start": "cross-env NODE_ENV=production node server/index.js",
6. зависимости и devDependities
являются необязательными полями. Поле
dependencies
указывает модули, от которых зависит проект, аdevDependencies
указывает модули, необходимые для разработки проекта.
Значение указывает на объект. Каждый член этого объекта состоит из имени модуля и соответствующего требования к версии, указывающего зависимый модуль и диапазон его версий.
По умолчанию package.json не создается, он будет создан при установке модуля npm install
.
npm экспресс-установка npm install express --save npm install express --save-dev
Приведенный выше код означает установку экспресс-модуля отдельно.
dependencies
.--save-dev
означает запись модуля --save
атрибут dependencies
.devDependencies
.7.
Необязательное поле BundleDependities: другие зависимости, упакованные одновременно при публикации пакета.
8. Необязательное поле PeerDependities
, зависимость совместимости, если ваш проект или модуль одновременно зависит от другого модуля, но версия, от которой он зависит, отличается.
Например, ваш проект зависит от версии 1.0 модуля A и модуля B, а сам модуль A зависит от версии 2.0 модуля B.
{ "name": "чай-как и обещал", "peerDependency": { "чай": "1.x" } }
Приведенный выше код указывает, что при установке модуля chai-as-promised
основная программа chai
должна быть установлена вместе, а версия chai
должна быть 1.x
Если в вашем проекте указана зависимость chai
версии 2.0, будет сообщено об ошибке.
9. Необязательное поле bin
. Поле bin используется для указания местоположения исполняемого файла, соответствующего каждой внутренней команде.
Создайте файл /bin/www в корневом каталоге проекта
#!Настройте
«bin»в узле
/usr/bin/envpackage.json: {
"lee-cli":"./bin/www" }
npm link
добавляет путь к значению атрибута bin в пакете к глобальной ссылке, создает ярлык соединения и
запускает lee-cli
в командной строке для выполнения файла bin/www. Процесс следующий:
В приведенном выше примере www создаст символическую ссылку node_modules/.bin/www
. Поскольку каталог node_modules/.bin/
будет добавлен в системную переменную PATH во время выполнения, эти сценарии можно вызывать напрямую с помощью команд без пути при запуске npm.
10. config
Поле конфигурации используется для вывода значений в переменные среды
{ "имя" : "пакет", "конфигурация": { "порт": "8080" }, "scripts" : { "start" : "node server.js" } }
Если мы хотим изменить его, мы можем использовать
npm config set package:port 80
11. Необязательное поле engine
указывает версию платформы, на которой работает модуль, например определенную версию Node или браузера. Вы также можете указать версию. применимая версия
npm
.
"двигатели" : { «узел»: ">=0,10,3 <0,12" }
12. Необязательное поле лицензии
, указывающее определение лицензии, применимой к коду, описанному в package.json. Разные протоколы имеют разные ограничения. Сообщите пользователям, какие разрешения у них есть на использование вашего модуля и какие ограничения существуют на его использование.
Пожалуйста, обратитесь к: Choosealicense.com/, чтобы выбрать лицензию.
Например: MIT: максимальное разрешение, другие могут изменить ваш код после его загрузки, значение установки по умолчанию.
13.
Необязательное поле «Автор», разработчик проекта.
14. Частное
необязательное поле, логическое значение, независимо от того, является ли оно частным. Если установлено значение true, npm отказывается публиковать.
Это способ предотвратить передачу частных пакетов посторонним. Если вы хотите обернуть пакет для публикации только в определенном реестре (например, во внутреннем реестре), вы можете использовать приведенное ниже описание словаря publicConfig, чтобы переопределить параметры конфигурации реестра во время публикации.
15.
Необязательное поле ключевых слов — ключевые слова проекта — представляет собой массив строк. Это помогает людям найти пакет при использовании поиска npm.
16. Необязательное поле os
указывает операционную систему, в которой может работать модуль.
17. style
style указывает расположение файла стиля при использовании браузером.
18.
Тип места, где хранится код пакета репозитория, может быть git или svn.
19. Необязательное поле домашней страницы
не содержит URL-адресов с префиксами протокола, например http://.
Проблема с версией:
версия: "1.0.0"
1.0.0:
Изменение первой цифры означает: несовместимость со старым кодом, масштабное обновление, выпуск новой версии;
вторая цифра означает: добавлены какие-то функции,третья -
обратная совместимость;цифра
означает: добавлены некоторые функции, бит обратной совместимости
означает: небольшие исправления, исправления ошибок;
когда мы публикуем проект, мы используем npm + git
npm version patch
(патча). Это изменит третью цифру версии. ; используйте git tag
для выполнения, и он автоматически будет в git. npm version minor
, чтобы изменить вторую цифру номера версии;npm version major
чтобы изменить первую цифру номера версии; ;версия npm [<новая версия> | основной | предварительный выпуск | предварительный выпуск | Major: номер основной версии Minor: Номер дополнительной версии patch: Номер патча premajor: предварительная основная версия Prepatch: предварительная дополнительная версия Prerelease: предварительная версия
PS: Обратите внимание: если сообщается об ошибке: Рабочий каталог Git не очищен, это означает, что вы нужен git status
, чтобы очистить его сейчас.
git добавить. git commit -m "подробное объяснение package.json"
npm versin monir -m"增加版本号"
git push -u origin master
Как сформулировать правила?
Как пользователи, мы можем указать в файле package.json, сколько обновлений мы можем принять для этого пакета (при условии, что в настоящее время мы полагаемся на версию 1.2.4):
Если мы намерены принимать обновления только до версии исправления (т. е. меняется последняя цифра), можно записать так:
1.2 1.2.х ~1.2.4
Если вы принимаете минорные обновления версии (изменения во второй позиции), вы можете написать так:
1 1.х ^1.2.4
Если вы можете принять обновления основной версии (естественно, принять изменения второстепенной версии и версии исправления), вы можете написать так:
*x
Подводя итог: существует три типа изменений версий, какой тип обновления зависимых пакетов принимается ? Напишите номер версии точно до предыдущей цифры.
Цикл и этапы версий:
Например:
2.1.0-beta.1
обычно используется такими пользователями. Такая штука не будет установлена. Такая штука может использоваться инсайдерами и тестировщиками.
Примеры | проблем |
---|---|
пакета | зависимостей |
~ | 1.2.3 основная версия + дополнительная версия + версия исправления 1.2.3 <= версия < 1.3.0; ~ 1.2 основная версия + дополнительная версия; 1.2.0 <= версия < 0 |
~ 1 | |
основная версия 1.0.0 <= версия < 2.0.0 |
Описание | диапазона версий | экземпляра | символа | ;
---|---|---|---|
1.0.0 | 1.0.0 | привязан к версии 1.0.0 и должен быть этой версии. | |
^ будет соответствовать последнему пакету зависимостей большой версии | ^1.2.3, ^0.2.3 | >=1.2.3 <2.0.0, >=0.2.3 <0.3.0 | означает установку последней версии 1.xx (не ниже 1.2.3, включая 1.3.0), но версия 2.xx не будет установлена, а это означает, что основной номер версии не будет изменен во время установки. Следует отметить, что если основной номер версии равен 0, курсор ведет себя так же, как тильда. Это связано с тем, что он все еще находится на стадии разработки, и даже изменения второстепенного номера версии могут привести к несовместимости программы. (Основная версия) |
~ будет соответствовать последней дополнительной версии пакета зависимостей | ~1.2.3 | >=1.2.3 <1.3.0 | означает установку последней версии 1.2.x (не ниже 1.2.3), но не установку 1.3.x То есть основной и дополнительный номер версии не будут изменены во время установки. |
>= | >=2.1.0 | >=2.1.0 | больше или равно 2.1.0 |
<= | <=2.0.0 | <=2.0.0 | меньше или равно 2.0.0 |
последнее | Установите последнюю версию | ||
* | >=0.0.0 | любая версия | |
- | 1.2.3 - 2.3.4 | >=1.2.3 <=2.3.4 |
Разница между установкой Dependencies
и dependencies
?
devDependencies
— это модули, необходимые для разработки, поэтому мы можем устанавливать их по мере необходимости в процессе разработки, чтобы повысить эффективность нашей разработки, например, некоторые известные сторонние библиотеки, webpack
, rollUp
, less
, babel
и т. д. Нет необходимости устанавливать его в производственной среде.
В devDependencies
рекомендуется установить следующие библиотеки:
пакет зависимостей (укажите, обновите, локально, используйте, удалите).
1. Установите локальный пакет зависимостей
npm install jquery
. создайте в текущем каталоге каталог node_modules
, а затем загрузите указанный нами пакет в этот каталог.
2. Чтобы указать версию установки, вы можете @版本号
после имени пакета.
Если имя пакета начинается с пакета @
, это пакет с ограниченной областью действия .
npm установить [email protected] npm install jquery@">=1.1.0 <2.2.0"После
обновления
npm install jquery@latestномер версии в зависимостях также изменится.
3. Обновите зависимый пакет
npm update jquery
4. Используйте пакет
let jquery = require('jquery');
<script src="/node_modules/jquery/dist/jquery.js">//На это необходимо обратить внимание. path</script>
6, Удалите зависимый пакет
npm uninstall jquery
Семантическое управление версиями (правила семантического управления версиями)
https://docs.npmjs.com/about-semantic-versioning
https://github.com/npm/node-semver
package .json Примечания
в соответствии с вышеизложенным. Когда мы используем npm init
нам будет предложено заполнить несколько элементов. Некоторые из них являются необязательными, а некоторые обязательны. Эти обязательные поля — это все поля, которые должны быть в содержимом package.json
: name
и. version
. В противном случае install
не может быть выполнена.
xxx
Другие примечания: