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

原文网址: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 [email protected]
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即可。

 其他网址

npm link的基本用法及实例_justforuse的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/125119009