npm 学习总结

最后更新:
阅读次数:

npm(Node Package Manager)是 Node.js 默认的、以 JavaScript 编写的软件包管理系统。它可以让 javascript 开发者能够更加轻松的共享代码或共用代码片段(或称为模块)。

官方网站:www.npmjs.com

npm 提供了两种包的安装形式:局部安装全局安装。你可以通过你的项目使用情况选择如何安装。如果你的项目依赖于某个包,那么建议将改包安装到局部。其他其他条件下,比如你要在命令行工具中使用这个包,可选择在全局安装。

常用的命令(命令行下输入)

  • 查看当前 npm 的版本号
npm -v
  • 安装包
# 本地安装
npm install package-name

# 全局安装
npm install -g package-name

安装一个包后,会自动在本地或全局自动生成一个 node_modules 目录,用来存放安装的包。

添加 --save 标识命令,会将你安装的包写入你本地 package.json 文件内的 dependencies 键下。

添加 --save-dev 标识命令,会将你安装的包写入你本地 package.json 文件内的 devDependencies 键下。

更多用法点这里!

npm install --save package-name
  • 查看包的根目录(node_modules 目录)的绝对路径
# 查看本地包所在的绝对目录
npm root

# 查看全局包所在的绝对目录
npm root -g
  • 查看包的 package.json 信息
npm view package-name

也可在上面命令后面添加相应的参数查看相关的信息。

# 查看当前包的依赖关系
npm view package-name dependencies
  • 查看包的使用信息
# 查看本地(当前项目)使用的包
npm list

# 查看全局使用的包
npm list -g
  • 卸载包
# 卸载本地包
npm uninstall package-name

# 卸载全局包
npm uninstall -g package-name
  • 更新包
# 更新本地包
npm update package-name

# 更新全局包
npm update -g package-name

更新依赖

使用这个工具:npm-check-updates ,将 package.json 的各个依赖都替换到最新版本。

然后再执行下面的命令(npm install)安装依赖。

npm-check-updates is a command-line tool that allows you to upgrade your package.json or bower.json dependencies to the latest versions, regardless of existing version constraints.

ncu : show status of the dependencies
ncu -u : update the package.json in your project, and make all dependencies version is newest

谈谈 package.json 文件

每一个包都有一个 package.json 文件,这个文件存放了包的名称、版本、作者、机构、模块入口、依赖项等信息

创建一个 package.json 文件有两种方式:一种方法是直接在文本编辑器下创建并编辑 package.json 文件,另一种方法是在命令行下创建 npm init

# 在当前工作目录下以用户引导的方式创建一个全新的 package.json 文件

npm init # 一步一步地生成 package.json
npm init -y # 直接生成默认的 package.json

至于 package.json 文件的内容,可以命令行下输入命令 npm help json 打开帮助文档,根据实际需要自行初始化文件内容即可。下面列出了常用的配置项。

{
"name": "package-name",
"version": "1.0.0",
"main": "./main.js",
"description": "This is a description for my package!",
"keywords": ["first-package", "test"],
"bugs": {
"url": "https://github.com/owner/project/issues",
"email": "percymong@163.com"
},
"author": {
"name": "percy",
"email": "percymong@163.com",
"url": "https:xxxx"
},
"contributors": [
{
"name": "Mike",
"email": "1111@gmail.com"
},
{
"name": "Celeste",
"email": "2222@gmail.com"
}
],
"license": "MIT",
"engines": {
"node": ">= 0.8.0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/xxx/xxx.git"
},
"bin": {
"someTool": "./bin/someTool.js"
},
"scripts": {
"test": "echo This is a test!",
"startNormal": "./bin/someTool.js build",
"startUseBin": "someTool build"
},
"dependencies": {
"csslint": "^1.0.5",
"mongodb": "1.3.19"
},
"devDependencies": {
"browserify": "~13.0.0",
"karma-browserify": "~5.0.1"
}
}

下面是对其中一些字段的解释:

  • main 字段:指明了模块入口文件的相对路径, 默认为 index.js
  • engines 字段:指明依赖的 node.js 版本
  • repository 字段:指明源码托管地址
  • bin 字段:用来指定各个内部命令对应的可执行文件的位置
  • scripts 字段:指定了运行脚本命令的 npm 命令行缩写,比如 start 指定了运行 npm run start 时所要执行的命令
  • dependencies 字段:指定了项目运行所依赖的模块
  • devDependencies 字段:指定项目开发所需要的模块

本来想把上面的注释直接写在上面代码的相应位置上,但是解析 json 时会报错,便在网上查了一下,在 StackOverflow 上找到了答案:How do I add comments to package.json for npm install?

# 解决办法,你应该这样写注释

{
"//": "This is a comment for name.",
"name": "package-name",
"version": "1.0.0"
}

参考资料