0
点赞
收藏
分享

微信扫一扫

npm--包的命令(安装包/卸载包/发布包等)--使用/实例

简介

说明

        本文介绍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>
说明:

  1. 会将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  2. 可以通过 require() 来引入本地安装的包。

全局安装

命令:npm install <package> -g 
说明:

  1. 默认放到用户目录下。可以通过npm get prefix查看安装位置
    默认位置linux: /usr/local windows: C:\Users\xxx\AppData\Roaming\npm
  2. 可以直接在命令行里使用。

全局安装时安装到指定位置的方法

法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");
}
}

2. myProject目录下编写demo.js文件 

var myModule = require("allenModule95");

console.log(myModule.name);
myModule.sayHello();

3. 运行node demo   //报错,allenModule95模块找不到,因为此时的require搜寻目录没有包含此模块。

使用npm link

1. 切换到allenModule95目录下,执行npm link。作用:在全局环境下,生成一个符号链接文件,该文件的名字就是package.json文件中指定的模块名,同时我们对此模块的修改会实时反馈在全局目录下。

2. 切换到myProject目录下,执行npm link allenModule95。作用:将自定义的模块与此项目连接起来。

3. 执行:node demo    //成功打印出如下内容

allenModule95
hello allenModule95

总结

  • 如此,我们可以在任何目录下使用该模块,并且一处修改,处处改变,节省了同步依赖包的步骤。
  • 如果想解除项目与模块的依赖则可以在项目目录下执行npm unlink allenModule95即可。
  • 如果想要从全局环境移除allenModule95模块链接,则可以在该模块目录下执行npm unlink allenModule95即可。

举报

相关推荐

0 条评论