1. поле скрипта:
    внутри package.json есть поле скрипта, через которое мы можем подключаться к событиям жизненного цикла npm.

События жизненного цикла NPM:

  • prepublish: запускать ДО того, как пакет будет упакован и опубликован, а также на локальном npm install без каких-либо аргументов. (Увидеть ниже)
  • prepare: запустите как ДО того, как пакет будет упакован и опубликован, так и локально npm install без каких-либо аргументов (см. ниже). Это выполняется ПОСЛЕ prepublish, но ДО prepublishOnly.
  • prepublishOnly: запускать ДО того, как пакет будет подготовлен и упакован, ТОЛЬКО npm publish. (Увидеть ниже.)
  • prepack: запускать ДО того, как архив будет упакован (на npm pack, npm publish и при установке зависимостей git)
  • postpack: Запустите ПОСЛЕ того, как архив будет сгенерирован и перемещен в конечный пункт назначения.
  • publish, postpublish: запускать ПОСЛЕ публикации пакета.
  • preinstall: запускать ДО установки пакета.
  • install, postinstall: запустите ПОСЛЕ того, как пакет будет установлен.
  • предварительно удалить, удалить: запустить ДО удаления пакета.
  • postuninstall: запускать ПОСЛЕ того, как пакет будет удален.
  • preversion: запустите ДО изменения версии пакета.
  • версия: запускать ПОСЛЕ изменения версии пакета, но ДО фиксации.
  • postversion: запускать ПОСЛЕ изменения версии пакета и ПОСЛЕ фиксации.
  • pretest, test, posttest: запускается командой npm test.
  • prestop, stop, poststop: выполняется командой npm stop.
  • prestart, start, poststart: запускается командой npm start.
  • до перезапуска, перезапуска, после перезапуска: выполняется командой npm restart. Примечание. npm restart запустит сценарии остановки и запуска, если сценарий restart не указан.
  • preshrinkwrap, shrinkwrap, postshrinkwrap: запускается командой npm shrinkwrap.

2. конфигурация

Объект «config» можно использовать для установки параметров конфигурации, используемых в сценариях пакетов, которые сохраняются при обновлении. Например, если в пакете было следующее:
{ "name" : "foo"
, "config" : { "port" : "8080" } }

а затем была команда «старт», которая затем ссылалась на переменную среды npm_package_config_port, тогда пользователь мог переопределить это, выполнив npm config set foo:port 8001.

3. зависимости и devDependencies
Разница между ними заключается в том, что devDependencies — это модули, которые требуются только во время разработки, а зависимости — это модули, которые также требуются во время выполнения.

Некоторыми хорошими примерами установки devDependencies являются Nodemon, Babel, ESLint и тестовые среды, такие как Chai, Mocha, Enzyme и т. д.…

Некоторые хорошие примеры зависимостей, которые потребуются во время выполнения, включают React, Redux, Express, и Axios.

4. Engines
Вы можете указать версию узла, на которой работает ваш материал:
{ "engines" : { "node" : ">=0.10.3 <0.12" } }

Примечание. В случае зависимостей, если вы не укажете версию (или укажете «*» в качестве версии), подойдет любая версия узла.

Если вы укажете поле «двигатели», то npm потребует, чтобы «узел» был где-то в этом списке. Если «двигатели» опущены, то npm просто будет считать, что он работает на узле.

Вы также можете использовать поле «двигатели», чтобы указать, какие версии npm способны правильно установить вашу программу. Например:
{ "engines" : { "npm" : "~1.0.20" } }

4. os(операционная система)
Вы можете указать, в каких операционных системах будет работать ваш модуль:
"os" : [ "darwin", "linux" ]

5.cpu
Если ваш код работает только на определенных архитектурах ЦП, вы можете указать, какие именно.
"cpu" : [ "x64", "ia32" ]

6. ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ

npm установит некоторые значения по умолчанию в зависимости от содержимого пакета.

  • "scripts": {"start": "node server.js"}
  • Если в корне вашего пакета есть файл server.js, то npm по умолчанию установит для команды start значение node server.js.
  • "scripts":{"install": "node-gyp rebuild"}
  • Если в корне вашего пакета есть файл binding.gyp и вы не определили скрипт install или preinstall, npm по умолчанию будет использовать команду install для компиляции с использованием node-gyp.
  • "contributors": [...]
  • Если в корне вашего пакета есть файл AUTHORS, npm будет обрабатывать каждую строку в формате Name <email> (url), где адрес электронной почты и URL-адрес необязательны. Строки, начинающиеся с # или пустые, будут игнорироваться.