NodeJs-包管理工具

包英文单词是 package ,代表了一组特定功能的源码集合

管理包的应用软件,可以对包进行 下载安装 , 更新 , 删除 , 上传 等操作

借助包管理工具,可以快速开发项目,提升开发效率

前端常用的包管理工具有npm、yarn、cnpm

npm

node.js 在安装时会 自动安装 npm

npm基本使用
  1. 初始化

    npm init 命令的作用是将文件夹初始化为一个包, 交互式创建 package.json 文件

    package.json 是包的配置文件,每个包都必须要有 package.json

    shell 复制代码
    npm init

    之后命令行根据提示交互式输入,全部运行完之后会创建package.json

    json 复制代码
    {
      "name": "test", // 包名字
      "version": "1.0.0", // 包版本
      "description": "test", // 包描述
      "main": "index.js", // 包入口文件
      "scripts": { // 脚本配置
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "", // 作者
      "license": "ISC" // 开源证书
    }

    可以使用使用 npm init -y 或者 npm init --yes 极速创建package.json,包名字不能使用中文和大写,如果不写默认值则是文件夹名称

  2. 搜索工具包

    shell 复制代码
    # 命令行
    npm search 关键字

    也可以去npm包网址搜索

  3. 下载安装包

    shell 复制代码
    npm install 包名
    npm i 包名 #简写
    # 安装完之后,安装的包就是当前包的一个依赖包

    运行之后文件夹下会增加两个资源

    • node_modules 文件夹 存放下载的包
    • package-lock.json 包的锁文件 ,用来锁定包的版本
  4. require导入npm模块的基本流程

    js 复制代码
    const fs = require('fs')
    • 在当前文件夹下 node_modules 中寻找对应的同名的文件夹
    • 如果没有找到,在上级目录中下的 node_modules 中寻找同名的文件夹,直至找到磁盘根目录
开发依赖与生产依赖
  1. 生产依赖,包信息保存在 package.json 中 dependencies 属性

    shell 复制代码
    npm --save 包名
    npm i -S 包名 #简写
  2. 开发依赖,包信息保存在 package.json 中 devDependencies 属性

    shell 复制代码
    npm i --save dev 包名
    npm -D 包名 #简写
  3. 开发依赖 是只在开发阶段使用的依赖包,而 生产依赖 是开发阶段和最终上线运行阶段都用到

    的依赖包

npm全局安装

全局安装的命令不受工作目录位置影响,可以通过 npm root -g 可以查看全局安装包的位置

shell 复制代码
npm i 包名 # 局部安装,包只能在对应的工作目录里面使用
shell 复制代码
npm i -g 包名  # 全局安装
shell 复制代码
# nodemon的作用是自动重启Node应用程序
npm i -g nodemon


nodemon test.js # 代替 node 去运行js文件,代码发生改变时不需要手动重启服务,自动重启
安装所有依赖

该命令可以依据 package.json 和 package-lock.json 的依赖声明安装项目依赖

shell 复制代码
npm install
npm i # 简写
安装指定版本的包
shell 复制代码
npm i 包名@版本号
删除包
shell 复制代码
npm remove 包名
npm r 包名 #简写

npm r -g 包名 #全局删除
配置命令别名

通过配置命令别名可以更简单的执行命令,package.json中的scripts属性

json 复制代码
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "server": "node ./index.js" // 配置命令别名
    
  },
shell 复制代码
# 执行该命令,就会去scripts找对应的Server,然后执行Server的代码 node运行代码
npm run server 

如果在scripts中配置了start属性,运行的时候不需要加run,直接npm start

npm start 是项目中常用的一个命令,一般用来启动项目

npm run 有自动向上级目录查找的特性,跟 require 函数也一样

cnpm

cnpm 是一个淘宝构建的 npmjs.com 的完整镜像,也称为淘宝镜像,网址https://npmmirror.com/

cnpm 服务部署在国内 阿里云服务器上 , 可以提高包的下载速度

官方也提供了一个全局工具包 cnpm ,操作命令与 npm 大体相同

安装cnpm
shell 复制代码
# 安装cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com

cnpm初始化、增删改查等操作命令方式与npm一致

npm配置淘宝镜像
  1. 直接配置

    shell 复制代码
    npm config set registry https://registry.npmmirror.com/
  2. 工具配置,使用nrm配置npm的镜像地址

    shell 复制代码
    #安装nrm
    npm i -g nrm
    
    # 修改镜像
    nrm use taobao
    
    # 检查是否配置成功
    npm config list

yarn

yarn 是由 Facebook 在 2016 年推出的新的 Javascript 包管理工具,官方网址

特点:

  • 速度:yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快

  • 安全:在执行代码之前,yarn 会通过算法校验每个安装包的完整性

  • 可靠:使用详细、简洁的锁文件格式和明确的安装算法,yarn 能够保证在不同系统上无差异的工作

  1. 安装yarn

    shell 复制代码
    npm i -g yarn
  2. 初始化

shell 复制代码
yarn init
yar init -y # 快捷初始化
  1. 安装依赖

    shell 复制代码
    yarn add 包名 # 生产依赖
    yarn add 包名 --dev # 开发依赖
    yarn global add 包名 #全局安装
  2. 删除依赖

    shell 复制代码
    yarn remove 包名 # 局部删除
    yarn global remove 包名 # 全局删除
  3. 安装项目依赖

    shell 复制代码
    yarn
  4. 配置方式一致,运行使用下面命令

    shell 复制代码
    yarn 别名
  5. yarn配置淘宝镜像

    shell 复制代码
    # 可以通过 yarn config list 查看 yarn 的配置项
    yarn config set registry https://registry.npmmirror.com/
  6. npm 的锁文件为 package-lock.json ,yarn 的锁文件为 yarn.lock

管理发布包

可以将自己开发的工具包发布到 npm 服务上,方便自己和其他开发者使用

  1. 创建文件夹,并创建文件 index.js, 在文件中声明函数,使用 module.exports 暴露
  2. npm 初始化工具包,package.json 填写包的信息 (包的名字是唯一的)
  3. 注册账号 https://www.npmjs.com/signup
  4. 激活账号
  5. 修改为官方的官方镜像 (命令行中运行 nrm use npm )
  6. 命令行下 npm login 填写相关用户信息
  7. 命令行下 npm publish 提交包
  8. 修改包:修改 package.json 中的版本号,然后使用npm publish发布更新
  9. 可以使用npm unpublish --force 删除包
相关推荐
zhougl9962 小时前
html处理Base文件流
linux·前端·html
花花鱼2 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_2 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
careybobo3 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
杉之5 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端5 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
再学一点就睡5 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
木木黄木木6 小时前
html5炫酷图片悬停效果实现详解
前端·html·html5
请来次降维打击!!!7 小时前
优选算法系列(5.位运算)
java·前端·c++·算法
難釋懷7 小时前
JavaScript基础-移动端常见特效
开发语言·前端·javascript