欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Node] 03. Node Package Manager (NPM)

程序员文章站 2022-05-31 09:28:14
...

Package.json

  • Every Node application has a package.json file that includes metadata about the application. This includes the name of the application, its version, dependencies, etc.
% mkdir npm-demo
% cd npm-demo
% npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (npm-demo) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/junjieliao/WebstormProjects/npm-demo/package.json:

{
  "name": "npm-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this OK? (yes) 
% ls
package.json
[email protected] npm-demo % npm init --yes
Wrote to /Users/junjieliao/WebstormProjects/npm-demo/package.json:

{
  "name": "npm-demo",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "keywords": [],
  "description": ""
}

Installing a Node Package

  • We use NPM to download and install 3rd-party packages from NPM registry.
  • All the installed packages and their dependencies are stored under node_modules folders. This folder should be excluded from the source control.
% npm i underscore
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 1 package from 1 contributor and audited 1 package in 0.783s
found 0 vulnerabilities

Using a Package

const _ = require('underscore')

let res = _.contains([1, 2, 3], 3)
console.log(res)
% node index
true

Package Dependencies

% npm i mongoose
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 30 packages from 18 contributors and audited 31 packages in 1.928s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

% ls node_modules/
bl                              inherits                        mongoose-legacy-pluralize       regexp-clone                    sift
bluebird                        isarray                         mpath                           require_optional                sliced
bson                            kareem                          mquery                          resolve-from                    sparse-bitfield
core-util-is                    memory-pager                    ms                              safe-buffer                     string_decoder
debug                           mongodb                         process-nextick-args            saslprep                        underscore
denque                          mongoose                        readable-stream                 semver                          util-deprecate

NPM Packages and Source Control

% ls
index.js                package-lock.json       package.json
% npm i
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

added 31 packages from 19 contributors and audited 31 packages in 0.574s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

% ls
index.js                node_modules            package-lock.json       package.json

Semantic Versioning

  • Node packages follow semantic versioning: major.minor.patch.

Listing the Installed Packages

 % npm view mongoose

[email protected] | MIT | deps: 11 | versions: 594
Mongoose MongoDB ODM
https://mongoosejs.com

keywords: mongodb, document, model, schema, database, odm, data, datastore, query, nosql, orm, db

dist
.tarball: https://registry.npmjs.org/mongoose/-/mongoose-5.9.21.tgz
.shasum: 73bccfada310d0ad4c51b18b038d36a9b50aa870
.integrity: sha512-HQUemnKJdrE8ig+d3RTeOan6DWasmda8V97fs1ymozTNSuh2eGaf4D92/BrXYCw5QTgE/Ff5SxalndfgLn3DGg==
.unpackedSize: 2.0 MB

dependencies:
bson: ^1.1.4                     mongoose-legacy-pluralize: 1.0.2 ms: 2.1.2                        sift: 7.0.1                      
kareem: 2.3.1                    mpath: 0.7.0                     regexp-clone: 1.0.0              sliced: 1.0.1                    
mongodb: 3.5.9                   mquery: 3.2.2                    safe-buffer: 5.1.2               

maintainers:
- aaron <[email protected]>
- rauchg <[email protected]>
- tjholowaychuk <[email protected]>
- vkarpov15 <[email protected]>

dist-tags:
latest: 5.9.21   legacy: 4.13.19  unstable: 3.9.7  

published 4 days ago by vkarpov15 <[email protected]>
% npm view mongoose dependencies
 
{
  bson: '^1.1.4',
  kareem: '2.3.1',
  mongodb: '3.5.9',
  'mongoose-legacy-pluralize': '1.0.2',
  mpath: '0.7.0',
  mquery: '3.2.2',
  ms: '2.1.2',
  'regexp-clone': '1.0.0',
  'safe-buffer': '5.1.2',
  sliced: '1.0.1',
  sift: '7.0.1'
}

%  npm view mongoose versions    
 
[
  '0.0.1',     '0.0.2',     '0.0.3',        '0.0.4',        '0.0.5',
  '0.0.6',     '1.0.0',     '1.0.1',        '1.0.2',        '1.0.3',
  '1.0.4',     '1.0.5',     '1.0.6',        '1.0.7',        '1.0.8',
  '1.0.10',    '1.0.11',    '1.0.12',       '1.0.13',       '1.0.14',
  '1.0.15',    '1.0.16',    '1.1.0',        '1.1.1',        '1.1.2',
  '1.1.3',     '1.1.4',     '1.1.5',        '1.1.6',        '1.1.7',
  '1.1.8',     '1.1.9',     '1.1.10',       '1.1.11',       '1.1.12',
  '1.1.13',    '1.1.14',    '1.1.15',       '1.1.16',       '1.1.17',
  '1.1.18',    '1.1.19',    '1.1.20',       '1.1.21',       '1.1.22',
  '1.1.23',    '1.1.24',    '1.1.25',       '1.2.0',        '1.3.0',
  '1.3.1',     '1.3.2',     '1.3.3',        '1.3.4',        '1.3.5',
  '1.3.6',     '1.3.7',     '1.4.0',        '1.5.0',        '1.6.0',
  '1.7.2',     '1.7.3',     '1.7.4',        '1.8.0',        '1.8.1',
  '1.8.2',     '1.8.3',     '1.8.4',        '2.0.0',        '2.0.1',
  '2.0.2',     '2.0.3',     '2.0.4',        '2.1.0',        '2.1.1',
  '2.1.2',     '2.1.3',     '2.1.4',        '2.2.0',        '2.2.1',
  '2.2.2',     '2.2.3',     '2.2.4',        '2.3.0',        '2.3.1',
  '2.3.2',     '2.3.3',     '2.3.4',        '2.3.5',        '2.3.6',
  '2.3.7',     '2.3.8',     '2.3.9',        '2.3.10',       '2.3.11',
  '2.3.12',    '2.3.13',    '2.4.0',        '2.4.1',        '2.4.2',
  '2.4.3',     '2.4.4',     '2.4.5',        '2.4.6',        '2.4.7',
  '2.4.8',     '2.4.9',     '2.4.10',       '2.5.0',        '2.5.1',
  '2.5.2',     '2.5.3',     '2.5.4',        '2.5.5',        '2.5.6',
  '2.5.7',     '2.5.8',     '2.5.9',        '2.5.10',       '2.5.11',
  '2.5.12',    '2.5.13',    '2.5.14',       '2.6.0',        '2.6.1',
  '2.6.2',     '2.6.3',     '2.6.4',        '2.6.5',        '2.6.6',
  '2.6.7',     '2.6.8',     '2.7.0',        '2.7.1',        '2.7.2',
  '2.7.3',     '2.7.4',     '2.8.0',        '2.8.1',        '2.8.2',
  '2.8.3',     '2.9.0',     '2.9.1',        '2.9.2',        '2.9.3',
  '2.9.4',     '2.9.5',     '2.9.6',        '2.9.7',        '2.9.8',
  '2.9.9',     '2.9.10',    '3.0.0-alpha1', '3.0.0-alpha2', '3.0.0-rc0',
  '3.0.0',     '3.0.1',     '3.0.2',        '3.0.3',        '3.1.0',
  '3.1.1',     '3.2.0',     '3.2.1',        '3.2.2',        '3.3.0',
  '3.3.1',     '3.4.0',     '3.5.0',        '3.5.1',        '3.5.2',
  '3.5.3',     '3.5.4',     '3.5.5',        '3.5.6',        '3.5.7',
  '3.5.8',     '3.5.9',     '3.5.10',       '3.5.11',       '3.5.12',
  '3.5.13',    '3.5.14',    '3.5.15',       '3.5.16',       '3.6.0-rc0',
  '3.6.0-rc1', '3.6.2',     '3.6.3',        '3.6.4',        '3.6.5',
  '3.6.6',     '3.6.7',     '3.6.8',        '3.6.9',        '3.6.10',
  '3.6.11',    '3.6.12',    '3.6.13',       '3.6.14',       '3.6.15',
  '3.6.16',    '3.6.17',    '3.6.18',       '3.6.19',       '3.6.20',
  '3.7.0',     '3.7.2',     '3.7.3',        '3.7.4',        '3.8.0',
  '3.8.1',     '3.8.2',     '3.8.3',        '3.8.4',        '3.8.5',
  '3.8.6',     '3.8.7',     '3.8.8',        '3.8.9',        '3.8.10',
  '3.8.11',    '3.8.12',    '3.8.13',       '3.8.14',       '3.8.15',
  '3.8.16',    '3.8.17',    '3.8.18',       '3.8.19',       '3.8.20',
  '3.8.21',    '3.8.22',    '3.8.23',       '3.8.24',       '3.8.25',
  '3.8.26',    '3.8.27',    '3.8.28',       '3.8.29',       '3.8.30',
  '3.8.31',    '3.8.33',    '3.8.34',       '3.8.35',       '3.8.36',
  '3.8.37',    '3.8.38',    '3.8.39',       '3.8.40',       '3.9.0',
  '3.9.1',     '3.9.2',     '3.9.3',        '3.9.4',        '3.9.5',
  '3.9.6',     '3.9.7',     '4.0.0-rc0',    '4.0.0-rc1',    '4.0.0-rc2',
  '4.0.0-rc3', '4.0.0-rc4', '4.0.0',        '4.0.1',        '4.0.2',
  '4.0.3',     '4.0.4',     '4.0.5',        '4.0.6',        '4.0.7',
  '4.0.8',     '4.1.0',     '4.1.1',        '4.1.2',        '4.1.3',
  '4.1.5',     '4.1.6',     '4.1.7',        '4.1.8',        '4.1.9',
  '4.1.10',    '4.1.11',    '4.1.12',       '4.2.0',        '4.2.1',
  '4.2.2',     '4.2.3',     '4.2.4',        '4.2.5',        '4.2.6',
  '4.2.7',     '4.2.8',     '4.2.9',        '4.2.10',       '4.3.0',
  '4.3.1',     '4.3.2',     '4.3.3',        '4.3.4',        '4.3.5',
  '4.3.6',     '4.3.7',     '4.4.0',        '4.4.1',        '4.4.2',
  '4.4.3',     '4.4.4',     '4.4.5',        '4.4.6',        '4.4.7',
  '4.4.8',     '4.4.9',     '4.4.10',       '4.4.11',       '4.4.12',
  '4.4.13',    '4.4.14',    '4.4.15',       '4.4.16',       '4.4.17',
  '4.4.18',    '4.4.19',    '4.4.20',       '4.5.0',        '4.5.1',
  '4.5.2',     '4.5.3',     '4.5.4',        '4.5.5',        '4.5.6',
  '4.5.7',     '4.5.8',     '4.5.9',        '4.5.10',       '4.6.0',
  '4.6.1',     '4.6.2',     '4.6.3',        '4.6.4',        '4.6.5',
  '4.6.6',     '4.6.7',     '4.6.8',        '4.7.0',        '4.7.1',
  '4.7.2',     '4.7.3',     '4.7.4',        '4.7.5-pre',    '4.7.5',
  '4.7.6',     '4.7.7',     '4.7.8',        '4.7.9',        '4.8.0',
  '4.8.1',     '4.8.2',     '4.8.3',        '4.8.4',        '4.8.5',
  '4.8.6',     '4.8.7',     '4.9.0',        '4.9.1',        '4.9.2',
  '4.9.3',     '4.9.4',     '4.9.5',        '4.9.6',        '4.9.7',
  '4.9.8',     '4.9.9',     '4.9.10',       '4.10.0',       '4.10.1',
  '4.10.2',    '4.10.3',    '4.10.4',       '4.10.5',       '4.10.6',
  '4.10.7',    '4.10.8',    '4.11.0',       '4.11.1',       '4.11.2',
  '4.11.3',    '4.11.4',    '4.11.5',       '4.11.6',       '4.11.7',
  '4.11.8',    '4.11.9',    '4.11.10',      '4.11.11',      '4.11.12',
  '4.11.13',   '4.11.14',   '4.12.0',       '4.12.1',       '4.12.2',
  '4.12.3',    '4.12.4',    '4.12.5',       '4.12.6',       '4.13.0',
  '4.13.1',    '4.13.2',    '4.13.3',       '4.13.4',       '4.13.5',
  '4.13.6',    '4.13.7',    '4.13.8',       '4.13.9',       '4.13.10',
  '4.13.11',   '4.13.12',   '4.13.13',      '4.13.14',      '4.13.15',
  '4.13.16',   '4.13.17',   '4.13.18',      '4.13.19',      '4.13.20',
  '5.0.0-rc0', '5.0.0-rc1', '5.0.0-rc2',    '5.0.0',        '5.0.1',
  '5.0.2',     '5.0.3',     '5.0.4',        '5.0.5',        '5.0.6',
  '5.0.7',     '5.0.8',     '5.0.9',        '5.0.10',       '5.0.11',
  '5.0.12',    '5.0.13',    '5.0.14',       '5.0.15',       '5.0.16',
  '5.0.17',    '5.0.18',    '5.1.0',        '5.1.1',        '5.1.2',
  '5.1.3',     '5.1.4',     '5.1.5',        '5.1.6',        '5.1.7',
  '5.1.8',     '5.2.0',     '5.2.1',        '5.2.2',        '5.2.3',
  '5.2.4',     '5.2.5',     '5.2.6',        '5.2.7',        '5.2.8',
  '5.2.9',     '5.2.10',    '5.2.11',       '5.2.12',       '5.2.13',
  '5.2.14',    '5.2.15',    '5.2.16',       '5.2.17',       '5.2.18',
  '5.3.0',     '5.3.1',     '5.3.2',        '5.3.3',        '5.3.4',
  '5.3.5',     '5.3.6',     '5.3.7',        '5.3.8',        '5.3.9',
  '5.3.10',    '5.3.11',    '5.3.12',       '5.3.13',       '5.3.14',
  '5.3.15',    '5.3.16',    '5.4.0',        '5.4.1',        '5.4.2',
  '5.4.3',     '5.4.4',     '5.4.5',        '5.4.6',        '5.4.7',
  '5.4.8',     '5.4.9',     '5.4.10',       '5.4.11',       '5.4.12',
  '5.4.13',    '5.4.14',    '5.4.15',       '5.4.16',       '5.4.17',
  '5.4.18',    '5.4.19',    '5.4.20',       '5.4.21',       '5.4.22',
  '5.4.23',    '5.5.0',     '5.5.1',        '5.5.2',        '5.5.3',
  '5.5.4',     '5.5.5',     '5.5.6',        '5.5.7',        '5.5.8',
  '5.5.9',     '5.5.10',    '5.5.11',       '5.5.12',       '5.5.13',
  '5.5.14',    '5.5.15',    '5.6.0',        '5.6.1',        '5.6.2',
  '5.6.3',     '5.6.4',     '5.6.5',        '5.6.6',        '5.6.7',
  '5.6.8',     '5.6.9',     '5.6.10',       '5.6.11',       '5.6.12',
  '5.6.13',    '5.7.0',     '5.7.1',        '5.7.3',        '5.7.4',
  '5.7.5',     '5.7.6',     '5.7.7',        '5.7.8',        '5.7.9',
  '5.7.10',    '5.7.11',    '5.7.12',       '5.7.13',       '5.7.14',
  '5.8.0',     '5.8.1',     '5.8.2',        '5.8.3',        '5.8.4',
  '5.8.5',     '5.8.6',     '5.8.7',        '5.8.9',        '5.8.10',
  '5.8.11',    '5.8.12',    '5.8.13',       '5.9.0',        '5.9.1',
  '5.9.2',     '5.9.3',     '5.9.4',        '5.9.5',        '5.9.6',
  '5.9.7',     '5.9.9',     '5.9.10',       '5.9.11',       '5.9.12',
  '5.9.13',    '5.9.14',    '5.9.15',       '5.9.16',       '5.9.17',
  '5.9.18',    '5.9.19',    '5.9.20',       '5.9.21'
]

Installing a Specific Version of a Package

%  npm i [email protected]

> [email protected] install /Users/junjieliao/WebstormProjects/npm-demo/node_modules/mongodb
> node install.js

================================================================================
=                                                                              =
=  To install with C++ bson parser do <npm install mongodb --mongodb:native>   =
=                                                                              =
================================================================================
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 2 packages from 2 contributors, removed 28 packages, updated 2 packages and audited 5 packages in 1.396s
found 0 vulnerabilities

Updating Local Packages

% npm outdated
Package   Current  Wanted  Latest  Location
mongoose    2.4.2  2.9.10  5.9.21  npm-demo
[email protected] npm-demo % npm update
npm WARN deprecated [email protected]: Please upgrade to 2.2.19 or higher
npm WARN deprecated [email protected]: Fixed a critical issue with BSON serialization documented in CVE-2019-2391, see https://bit.ly/2KcpXdo for more details

> [email protected] install /Users/junjieliao/WebstormProjects/npm-demo/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 1 package from 1 contributor, removed 1 package, updated 3 packages and audited 5 packages in 2.444s
found 1 high severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

DevDependencies

% npm i jshint --save-dev
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 31 packages from 15 contributors and audited 36 packages in 1.435s

1 package is looking for funding
  run `npm fund` for details

found 2 vulnerabilities (1 low, 1 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Uninstalling a Package

% npm un mongoose
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

removed 4 packages and audited 32 packages in 0.428s

1 package is looking for funding
  run `npm fund` for details

found 1 low severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

Recap

// Install a package
npm i <packageName>

// Install a specific version of a package
npm i <packageName>@<version>

// Install a package as a development dependency
npm i <packageName> —save-dev

// Uninstall a package
npm un <packageName>

// List installed packages
npm list —depth=0

// View outdated packages
npm outdated

// Update packages
npm update
  • To install/uninstall packages globally, use -g flag.
相关标签: Node