Npm package.json

From wikinotes
Revision as of 18:52, 4 July 2021 by Will (talk | contribs) (→‎Locations)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

package.json and package-lock.json describe project requirements, and scripts for npm managed projects.

Documentation

man package-json https://man.archlinux.org/man/package-json.5
package.json quickstart https://nodejs.dev/learn/the-package-json-guide
package-lock.json quickstart https://nodejs.dev/learn/the-package-lock-json-file
version syntax https://nodejs.dev/learn/semantic-versioning-using-npm/

Locations

${PROJECT}/package.json requirements, script entrypoints, etc
${PROJECT}/package-lock.json exact resolved versions, set with npm update
${PROJECT}/node_modules/ project-local node packages

Basics

package.json describes your project,
has hooks for running project specfic scripts,
and manages dependencies.

It can be entirely empty, or contain additional keys.

{
  "name": "foo-project",
  "version": "1.1.1",
  "description": "a project about foo",
  "scripts": {
    "foo": "echo foo",  // npm run ${key} -- runs ${val} on cli
    "bar": "echo bar"
  },
  "dependencies": {
    "foopkg": "^1.0.0",  // minor/patch versions only
    "barpkg": "~3.0.0",  // patch versions only
    "bazpkg": "1.0.0 || >=1.1.0 <1.2.0",
  },
  "devDependencies": {
    // ...
  }
}

Usage

npm install      # install all packages in package.json
npm update       # update packages in package.json
npm run ${TASK}  # run cli command associated with 'scripts' object entry