您的位置:首页 > 产品设计 > 产品经理

npm 使用小结

2017-09-01 10:00 411 查看

本文内容基于 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 文件中的
dependencies
devDependencies
字段,这二者都是 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 用于安装模块。

命令格式

[code]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[/code] 
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 test
npm run lint
两条命令。现在你了解如何复合命令了吧。

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

参考

npm 官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: