美文网首页
nodejs包管理器 npm和yarn

nodejs包管理器 npm和yarn

作者: JX灬君 | 来源:发表于2021-06-26 13:16 被阅读0次

    yarn的存在解决了npm的安装速度问题,提高了构建项目的速度,提高了安全性,提高了可靠性。所以yarn是一个用来管理nodejs包的更好选择。

    npm介绍

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
    允许用户从NPM服务器下载别人编写的第三方包到本地使用。
    允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
    允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

    // 安装模块语法
    $ npm install <Module Name>
    // 安装模块实例(express为例)
    $ npm install express
    // 安装好之后,express包就放在了工程目录下的node_modules目录中,因此在代码中只需要通过require('express'),无需指定第三方包路径
    var express = require('express');
    // 全局安装与本地安装
    npm install express          # 本地安装
    npm install express -g   # 全局安装
    // 如果出现以下错误:
    npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 
    // 解决办法为:
    npm config set proxy null
    // 本地安装
    1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
    2. 可以通过 require() 来引入本地安装的包。
    // 全局安装
    1. 将安装包放在 /usr/local 下或者你 node 的安装目录。
    2. 可以直接在命令行里使用。
    // 如果希望具备两者功能,则需要在两个地方安装它或使用 npm link。
    // 接下来我们使用全局方式安装 express
    $ npm install express -g
    // 安装过程输出如下内容,第一行输出了模块的版本号及安装位置。
    express@4.13.3 node_modules/express
    ├── escape-html@1.0.2
    ├── range-parser@1.0.2
    ├── merge-descriptors@1.0.0
    ├── array-flatten@1.1.1
    ├── cookie@0.1.3
    ├── utils-merge@1.0.0
    ├── parseurl@1.3.0
    ├── cookie-signature@1.0.6
    ├── methods@1.1.1
    ├── fresh@0.3.0
    ├── vary@1.0.1
    ├── path-to-regexp@0.1.7
    ├── content-type@1.0.1
    ├── etag@1.7.0
    ├── serve-static@1.10.0
    ├── content-disposition@0.5.0
    ├── depd@1.0.1
    ├── qs@4.0.0
    ├── finalhandler@0.4.0 (unpipe@1.0.0)
    ├── on-finished@2.3.0 (ee-first@1.1.1)
    ├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
    ├── debug@2.2.0 (ms@0.7.1)
    ├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
    ├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
    └── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
    // 查看安装信息
    // 你可以使用以下命令来查看所有全局安装的模块:
    $ npm list -g
    
    ├─┬ cnpm@4.3.2
    │ ├── auto-correct@1.0.0
    │ ├── bagpipe@0.3.5
    │ ├── colors@1.1.2
    │ ├─┬ commander@2.9.0
    │ │ └── graceful-readlink@1.0.1
    │ ├─┬ cross-spawn@0.2.9
    │ │ └── lru-cache@2.7.3
    
    // 如果要查看某个模块的版本号,可以使用命令如下:
    $ npm list grunt
    
    projectName@projectVersion /path/to/project/folder
    └── grunt@0.4.1
    // 使用 package.json
    // package.json 位于模块的目录下,用于定义包的属性。接下来让我们来看下 express 包的 package.json 文件,位于 node_modules/express/package.json 内容:
    // Package.json 属性说明
    name - 包名。
    version - 包的版本号。
    description - 包的描述。
    homepage - 包的官网 url 。
    author - 包的作者姓名。
    contributors - 包的其他贡献者姓名。
    dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
    repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
    main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
    keywords - 关键字
    
    // 卸载模块
    $ npm uninstall express
    // 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
    $ npm ls
    
    // 更新模块
    $ npm update express
    
    // 搜索模块
    $ npm search express
    
    // 创建模块 
    $ npm init
    
    //在 npm 资源库中注册用户(使用邮箱注册):
    $ npm adduser
    Username: mcmohd
    Password:
    Email: (this IS public) mcmohd@gmail.com
    // 注册完后可以来发布模块
    $ npm publish
    
    // 使用淘宝 NPM 镜像
    $ npm install -g cnpm --registry=https://registry.npm.taobao.org
    // 这样就可以使用 cnpm 命令来安装模块了:
    $ cnpm install [name]
    

    yarn介绍

    Yarn 是一个由 Facebook 贡献的 Javascript 包管理器。
    速度超快。
    Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
    超级安全。
    在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
    超级可靠。
    使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。

    // 初始化一个新项目
    yarn init
    // 添加依赖包
    yarn add [package]
    yarn add [package]@[version]
    yarn add [package]@[tag]
    // 将依赖项添加到不同依赖项类别中
    // 分别添加到 devDependencies、peerDependencies 和 optionalDependencies 类别中:
    yarn add [package] --dev
    yarn add [package] --peer
    yarn add [package] --optional
    // 升级依赖包
    yarn upgrade [package]
    yarn upgrade [package]@[version]
    yarn upgrade [package]@[tag]
    // 移除依赖包
    yarn remove [package]
    // 安装项目的全部依赖
    yarn
    or yarn install
    

    比较可以看出,npm的所有功能yarn都能实现。而且npm的一些历史遗留问题,比如安装速度,安全问题,都因为yarn的存在得到很好的解决。

    相关文章

      网友评论

          本文标题:nodejs包管理器 npm和yarn

          本文链接:https://www.haomeiwen.com/subject/mwczyltx.html