[Node] 03. Node Package Manager (NPM)
程序员文章站
2022-05-31 09:28:14
...
Node Module System
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.
推荐阅读
-
使用nvm管理不同版本的node与npm
-
利用nvm管理多个版本的node.js与npm详解
-
浅谈node模块与npm包管理工具
-
node.js中npm包管理工具用法分析
-
windows下升级node&npm
-
下载了包在node_modules中,但没有在package.json中保存该包信息。
-
Node.js npm命令运行node.js脚本的方法
-
window环境下npm install node-sass报错的解决方法
-
强烈推荐,超详细,实操零失误:node.js安装 + npm安装教程 + Vue开发环境搭建 【非原创,但是用生命推荐的转载】
-
node、npm、chrome、v8、sandbox是什么?