npm 使用小结

简介: 本文内容基于 npm 4.0.5概述npm (node package manager),即 node 包管理器。这里的 node 包就是指各种 javascript 库。npm 是随同 Node.js 一起安装的包管理工具,所以不需要独立安装。

本文内容基于 npm 4.0.5

概述

npm (node package manager),即 node 包管理器。这里的 node 包就是指各种 javascript 库。

npm 是随同 Node.js 一起安装的包管理工具,所以不需要独立安装。

可以通过查看版本号来检测 npm 是否已经安装成功:

npm -v

如果已经安装了npm,想要升级,只需要一条命令即可:

npm install npm -g

package.json

简介

使用 npm 来管理的 javascript 项目一般都有一个package.json文件。它定义了这个项目所依赖的各种包,以及项目的配置信息(比如名称、版本、依赖等元数据)。

package.json 中的内容就是 json 形式。

重要字段

  • name - 包名。

  • version - 包的版本号。

  • description - 包的描述。

  • homepage - 包的官网 url 。

  • author - 包的作者姓名。

  • contributors - 包的其他贡献者姓名。

  • dependencies - 指定项目运行所依赖的模块。

  • devDependencies - 指定项目开发所依赖的模块。

  • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

  • main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。

  • keywords - 关键字

  • bin - 用来指定各个内部命令对应的可执行文件的位置。

  • scripts - 指定了运行脚本命令的npm命令行缩写。

例:一个完整的package.json

{
  "name": "reactnotes",
  "version": "1.0.0",
  "description": "react 教程",
  "main": "./index.js",
  "dependencies": {
    "react": "^15.4.1",
    "react-dom": "^15.4.1"
  },
  "devDependencies": {
    "webpack-dev-server": "^1.16.2"
  },
  "scripts": {
    "start": "node index.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/atlantis1024/ReactNotes.git"
  },
  "author": "victor",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/atlantis1024/ReactNotes/issues"
  },
  "homepage": "https://github.com/atlantis1024/ReactNotes#readme"
}

package 版本

上文介绍 package.json 文件中的 dependenciesdevDependencies 字段,这二者都是 json 数组。它们的每个 json 子对象,key 表示包名,value 表示版本。

npm 允许的版本声明方式十分多样。下面将为你介绍一二。

说明

  • version :安装一个确定的版本,遵循“大版本.次要版本.小版本”的格式规定。如:1.0.0。
  • ~version :以 ~1.0.0 来举例,表示安装1.0.x的最新版本(不低于1.0.0)。但是大版本号和次要版本号不能变。
  • ^version :以 ^1.0.0 来举例,表示安装1.x.x的最新版本(不低于1.0.0),但是大版本号不能变。
  • 1.2.x :表示安装1.2.x。
  • >、>=、<、<= :可以像数组比较一样,使用比较符来限定版本范围。
  • version1 - version2 :相当于 >=version1 <=version2.
  • range1 || range2 :版本满足range1 或 range2 两个限定条件中任意一个即可。
  • tag :一个指定 tag 对应的版本。
  • *"" (空字符串):任意版本。
  • latest :最新版本。
  • http://...file://... :你可以指定http或本地文件路径下的包作为版本。
  • git... :参考下面的“直接将 Git Url 作为依赖包版本”
  • user/repo :参考下面的“直接将 Git Url 作为依赖包版本”

例:下面的版本声明都是有效的

{ "dependencies" :
  { "foo" : "1.0.0 - 2.9999.9999"
  , "bar" : ">=1.0.2 <2.1.2"
  , "baz" : ">1.0.2 <=2.3.4"
  , "boo" : "2.0.1"
  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
  , "asd" : "http://asdf.com/asdf.tar.gz"
  , "til" : "~1.2"
  , "elf" : "~1.2.3"
  , "two" : "2.x"
  , "thr" : "3.3.x"
  , "lat" : "latest"
  , "dyl" : "file:../dyl"
  }
}

直接将 Git Url 作为依赖包版本

Git Url形式可以如下:

git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish

常用命令

npm 的命令很多,这里,我挑选几条 npm 中比较重要的命令来介绍。

更多详情可以参考 npm 官方文档

help

个人认为这是最重要的命令。对命令行的用法有问题的时候,还有什么比查看帮助信息更有用呢?

查看 npm 命令列表**

npm -h

查看所有命令使用方法

npm -l

查看某条命令详细帮助信息

如:要查看 npm install 命令的详细帮助信息

  • 查看命令的快捷帮助信息
npm install -h
  • 打开命令的帮助文档
npm help install

npm init

npm init 用于初始化一个新的package.json文件。

命令格式

npm init [-f|--force|-y|--yes]

说明

执行命令后,npm 会问你一系列问题,然后在执行命令的目录下创建一个package.json文件。

如果使用 -f / --force-y / --yes ,npm 会使用默认值为你创建 package.json 文件,不再询问任何问题。

npm install

npm install 用于安装模块。

命令格式

npm install (with no args, in package dir)
npm install [<@scope>/]<name>
npm install [<@scope>/]<name>@<tag>
npm install [<@scope>/]<name>@<version>
npm install [<@scope>/]<name>@<version range>
npm install <tarball file>
npm install <tarball url>
npm install <folder>

alias: npm i
common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--dry-run]

说明

  • npm install (with no args, in package dir)

默认的,将 package.json 中声明的所有模块安装到当前路径下的 node_modules 目录中。这称为本地安装

如果,加上 -g, --global 参数,npm 会将当前包安装到全局(系统目录下),这称为全局安装

  • npm install <folder>

安装位于文件系统上某文件夹中的包。

  • npm install <tarball file>

安装位于文件系统上的包。注意:如果你只想链接一个 dev 目录到你的 npm 根目录,使用 npm link 更容易做到这一点。

例:

npm install ./package.tgz

  • npm install <tarball url>

获取 url,然后安装它。为了区分此选项和其他选项,参数必须以“http://”或“https://”开头。

例:

npm install https://github.com/indexzero/forever/tarball/v0.5.6

  • npm install [<@scope>/] [-S|--save|-D|--save-dev|-O|--save-optional]

例:

npm install sax

npm install 有3个可选参数,用于保存或更新主package.json中的包版本:

  • -S, --save:包将被添加到 dependencies

  • -D, --save-dev:包将被添加到 devDependencies

  • -O, --save-optional:包将被添加到 optionalDependencies

当使用上述任何选项将依赖保存到package.json时,有两个额外的可选标志:

  • -E, --save-exact :会在 package.json 文件指定安装模块的确切版本。
  • -B, --save-bundle : 包也将被添加到bundleDependencies

  • npm install [<@scope>/]<name>@<tag>

安装被 tag 引用的包的版本。如果 tag 不存在于该包的注册表数据中,则失败。
例:

npm install sax@latest npm install @myorg/mypackage@latest

  • npm install [<@scope>/]<name>@<version>

安装指定的包的版本。如果版本尚未发布到注册表,则失败。

例:
npm install sax@0.1.1 npm install @myorg/privatepackage@1.5.0

  • npm install [<@scope>/]<name>@<version range>
    安装与指定版本范围相匹配的包版本。

例:

npm install sax@">=0.1.0 <0.2.0" npm install @myorg/privatepackage@">=0.1.0 <0.2.0"

npm uninstall

npm uninstall 用于卸载包。

命令格式

npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional]

aliases: remove, rm, r, un, unlink

说明

在全局模式下(即,在命令中附加-g--global),它将当前包上下文作为全局包卸载。

npm uninstall 有3个可选参数,用于保存或更新主 package.json 中的包版本:

  • -S, --save:包将被添加到 dependencies

  • -D, --save-dev:包将被添加到 devDependencies

  • -O, --save-optional:包将被添加到 optionalDependencies

例:

npm uninstall sax
npm uninstall sax --save
npm uninstall @myorg/privatepackage --save
npm uninstall node-tap --save-dev
npm uninstall dtrace-provider --save-optional

npm update

npm update 用于更新本地安装的模块。

命令格式

npm update [-g] [<pkg>...]

aliases: up, upgrade

说明

注:从npm@2.6.1开始npm update 仅更新顶级包。旧版本的 npm 会递归检查所有的依赖。如果要达到旧版本的行为,请使用npm --depth 9999 update

npm config

npm config 命令用于管理配置文件。

命令格式

npm config set <key> <value> [-g|--global]
npm config get <key>
npm config delete <key>
npm config list
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]

aliases: c

说明

  • npm config set <key> <value> [-g|--global] : 设置一个配置参数。

例:

npm config set foo:port 80

  • npm config get <key> :获取一个配置参数。

例:

npm config get foo:port

  • npm config delete <key> :删除一个配置参数。

例:

npm config delete foo:port

  • npm config list :打印配置参数列表。

  • npm config edit :直接编辑配置文件。

  • npm get <key>npm config get <key> 的简写。

  • npm set <key> <value> [-g|--global]npm config set <key> <value> [-g|--global] 的简写。

npm publish

npm publish 用于发布一个包。

命令格式

npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>]

Publishes '.' if no argument supplied
Sets tag 'latest' if no --tag specified

说明

将包发布到注册表,以便可以按名称安装。如果没有本地 .gitignore.npmignore 文件,则包括软件包目录中的所有文件。如果这两个过滤文件都存在时,某个文件被 .gitignore 忽略,而不被 .npmignore 忽略,则它将被包括。

npm run

如果在 package.json 文件中的 scripts 字段定义了命令,就可以使用 npm run 来执行脚本命令。

例:

假设 package.json 文件中的 scripts 字段如下定义:

"scripts": {
    "test": "mocha",
    "lint": "eslint lib bin hot scripts",
    "prepublish": "npm run test && npm run lint",
    "start": "node index.js"
}

npm run test :相当于执行 mocha 命令。它会开始执行测试框架 Mocha 。

npm run lint :相当于执行 eslint lib bin hot scripts 命令。它会开始执行 eslint 检查。

npm run prepublish :相当于执行 npm run testnpm run lint 两条命令。现在你了解如何复合命令了吧。

npm start :相当于执行 node index.js 。Node.js 启动一个服务的入口脚本。

参考

npm 官方文档

目录
相关文章
|
JavaScript 内存技术
40 # npm 的使用
40 # npm 的使用
64 0
|
2月前
|
JSON JavaScript 开发工具
NPM 使用介绍
10月更文挑战第2天
174 0
|
6月前
|
缓存 前端开发 JavaScript
npm 详解
npm 详解
179 2
|
7月前
|
存储 缓存 JavaScript
npm详解
npm详解
65 0
|
7月前
|
JavaScript 前端开发 Java
npm使用
npm使用
|
7月前
|
缓存 开发工具 git
npm使用介绍
npm使用介绍
|
7月前
|
存储 JavaScript 前端开发
什么是npm?
什么是npm?
|
7月前
|
JavaScript
什么是npm?能干什么?
什么是npm?能干什么?
|
关系型数据库 MySQL 开发工具
|
存储 JavaScript 安全
npm的介绍
npm的介绍
309 0