原文网址:npm--包的命令(安装包/卸载包/发布包等)--使用/实例_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍npm的包相关的命令。
npm介绍
- npm 全称为 node package manager, 即 node的包管理器。
- npm 是 Node.js 官方提供的包管理工具,他已经成了 Node.js 包的标准发布平台,用于 Node.js 包的发布、传播、依赖控制。
- npm 提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。
官网
npm 中文文档
安装包
用法
命令
作用
详述
npm install <pkg>
//同义词:i, isntall, add
安装pkg包
先下载pkg,然后下载pkg的packages.json里的dependencies、devDependencies等表示的依赖项。
如果执行命令时所在的路径里有packages.json,则会将此依赖加入到其dependencies。
npm install pkg1 pkg2
安装多个包
npm install git://github.com/package/path.git
从git下载安装
npm install sax@latest
npm install sax@0.1.1
npm install sax@">=0.1.0 <0.2.0"
指定版本号
默认安装最新版本,如果要安装模块的特定版本,可以在模块名后面加上 @ 和版本号。
参数
参数
说明
详述
-f/--force
强制安装。
不管是否安装过都重新安装。
安装前,npm install 会先检查node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
-g/--global
全局安装
详见下方:“本地安装/全局安装”
-P/--save-prod
//原来:-S/--save
模块名添加到生产阶段依赖: dependencies
模块名添加到packages.json 文件的dependencies项。
如果执行命令时所在的路径里有packages.json,不指定此参数也会将此依赖加入到其dependencies。
-D/--save-dev
模块名添加到开发阶段依赖:devDependencies
模块名添加到packages.json 文件的devDependencies项。
-O|--save-optional
模块名添加到 optionalDependencies
模块名添加到packages.json 文件的optionalDependencies项。
//目前不知道这个的作用
-E/--save-exact
精确安装指定版本的模块
用此选项后dependencies字段里每个模块版本号前面的^不见了。
--dry-run
只运行命令,并不实际安装
本地安装/全局安装
如果你希望具备本地安装和全局安装功能,则需要在两个地方安装它或使用 npm link。
本地安装
命令:npm install <Module Name>
说明:
- 会将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
- 可以通过 require() 来引入本地安装的包。
全局安装
命令:npm install <package> -g
说明:
- 默认放到用户目录下。可以通过npm get prefix查看安装位置 默认位置linux: /usr/local windows: C:\Users\xxx\AppData\Roaming\npm
- 可以直接在命令行里使用。
全局安装时安装到指定位置的方法
法1:修改配置
创建node_cache与node_global文件夹,然后设置 全局安装位置
npm set cache D:\ST\nodejs\node_cache
npm set prefix D:\ST\nodejs\node_global
法2:安装时指定位置
npm install --prefix ./install/here <package>
卸载包
命令
作用
描述
npm uninstall <pkg>
卸载包
同义词:remove, rm, r, un, unlink
npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional]
参数的含义与npm install一致。
更新包
命令
作用
描述
npm update <pkg> [-g]
更新包
npm update用的比较少,不如直接npm install 来的方便
查看包
命令
作用
描述
npm root [pkg] [-g]
查看包安装路径
npm search <pkg> [-g]
搜索包
npm list [pkg] [-g]
列出包。同义词:list, la, ll
选项:
parseable=true //目录的形式来展现当前安装的所有node包
例1:列出顶层所有全局安装过的包
npm list -g --depth=0
npm info [<pkg>] [-g]
查看包信息。
例:npm info express [author] //后边可直接跟package.json的键
npm view <pkg> [<labelName>] [-g]
查看包的package.json。同义词:v
指定labelName可查看标签内容。
查看thrift所有版本:
npm view thrift versions //或者npm view thrift@* version
npm outdated [<pkg>] [-g]
查看过时的包
发布包
命令
作用
描述
npm adduser
获得用户名
要根据提示操作。可加--registry xxx 加快速度
npm whoami
检测是否已取得账号
npm publish
发布包
将包发布到npm。(稍后可在此网站看到自己的包)
//不能发布npm中已经存在的包。
//npm publish --tag beta 可以添加tag。
//此时,可以用任意一台计算机npm install xxx 获得自己的包。
npm unpublish
撤销发布
npm unpublish packageName/[<package>@<version>] --force
//只有在发包的24小时内才允许撤销发布的包
//即使撤销了发布的包,发布时也不能再和被撤销的包的名称和版本重复了
关联包
命令
命令作用描述
npm link
创建本地包与全局包链接
将全局的包链接到本地
全局模式安装的包不能直接通过 require 使用,但通过 npm link 命令可以打破这一限制。
示例:npm install -g express 安装 express,在express包目录下运行命令:
npm link express ./node_modules/express -> /user/local/lib/node_modules/express
此时,在 node_modules 子目录中发现一个指向安装到全局的包的符号链接。
将本地的包链接到全局
使用方法:在包目录(package.json 所在目录)中运行 npm link 命令。如果我们要开发一个包,利用这种方法可以非常方便地在不同的工程间进行测试。
如果在outer 包目录(此包有package.json)下面有两个包package1 和package2,在package2 目录下执行 npm link命令,则会link outer 这个包 , 而不是package2:heavy_exclamation_mark: (它会link最外层包)
解决办法,先把最外层的package.json改为 package.json-xxx, 然后在内层包进行npm link, 然后再改回原来名字。如果link有改动,需要重新npm start.否则缓存的是原来的文件 (或者尝试先将 import 语句注释掉,然后再import来解决)
npm unlink解除关联
解除项目与模块的依赖:在项目目录下执行npm unlink packageName
全局环境移除allenModule95模块链接:在该模块目录下执行npm unlink allenModule95即可
实例
自己开发一个依赖包,在多个项目中使用它,可直接发布到官网,但修改会非常麻烦,且不利于在多个项目中使用。可使用npm link解决。本处假设我们开发一个名为allenModule95的依赖包。
不使用npm link时
1.在该依赖包下运行npm init命令,并编写index.js文件。
module.exports = {
name: "allenModule95Name",
sayHello: function(){
console.log("hello allenModule95");
}
}
- myProject目录下编写demo.js文件
var myModule = require("allenModule95");
console.log(myModule.name);
myModule.sayHello();
- 运行node demo //报错,allenModule95模块找不到,因为此时的require搜寻目录没有包含此模块。
使用npm link
切换到allenModule95目录下,执行npm link。作用:在全局环境下,生成一个符号链接文件,该文件的名字就是package.json文件中指定的模块名,同时我们对此模块的修改会实时反馈在全局目录下。
切换到myProject目录下,执行npm link allenModule95。作用:将自定义的模块与此项目连接起来。
执行:node demo //成功打印出如下内容
allenModule95
hello allenModule95
总结
- 如此,我们可以在任何目录下使用该模块,并且一处修改,处处改变,节省了同步依赖包的步骤。
- 如果想解除项目与模块的依赖则可以在项目目录下执行npm unlink allenModule95即可。
- 如果想要从全局环境移除allenModule95模块链接,则可以在该模块目录下执行npm unlink allenModule95即可。
其他网址
npm link的基本用法及实例_justforuse的博客-CSDN博客
版权归原作者 IT利刃出鞘 所有, 如有侵权,请联系我们删除。