包管理工具(node.js笔记)

122 阅读3分钟

概念

  • 包:(package),代表了一组特定功能的源码集合
  • 包管理工具
    • 管理 包 的应用软件,可以对包进行下载安装,更新,删除,上传等操作
    • 借助包管理工具,可以快速开发项目,提升开发效率
    • 包管理工具是一个通用的概念,很多编程语言都有包管理工具
  • 常用的包管理工具
    • npm
    • yarn
    • cnpm

npm

npm是node.js官方内置的包管理工具

npm安装

npm -v 查看版本号

npm基本使用

初始化

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

  1. package name(包名)不能使用中文,大写,默认值是文件夹的名称
  2. version(版本号) x.x.x的形式定义 x必须是数字 默认值是1.0.0
  3. package.json可以手动创建和修改
  4. npm init -y 或者 npm init --yes 急速创建 package.json

搜索包

方式:命令行 npm s/search 关键字

下载安装包

方式npm installnpm i 命令安装包

运行后文件夹会新增两个资源:

  • node_modules 文件夹 存放下载的包
  • package-lock.json 包的锁文件,用来锁定包的版本

注意: 假如命令安装包是A,A中安装了一些包(B),就说B是A的一个依赖包(A依赖B)

生产环境和开发环境

开发环境:程序员专门用来写代码的环境,一般指程序员的电脑,项目一般只能程序员自己访问

生产环境代码正式运行的环境,一般指正式的服务器电脑,项目一般每个客户都可以访问

生产依赖和开发依赖

类型命令补充理解
生产依赖npm i -S uniq
npm i --save uniq
-S是默认选项
包信息保存在package.json中dependencies属性
在开发阶段使用的依赖包
开发依赖npm i -D less
npm i --save-dev less
包信息保存在package.json中devDependencies属性在开发阶段和最终上线运行阶段都用到的依赖包

全局安装

npm i -g nodemon

作用自动重启node应用程序 说明

  • 全局安装的命令不受工作目录位置的影响
  • npm root -g可以查看全局安装包的位置
  • 不是所有的包都适合全局安装,只有全局类的工具才适合

安装指定版本的包

npm i <包名@版本号>

npm i jquery@1.10.2

删除依赖

//局部删除
npm remove uniq
npm r uniq
//全局删除
npm remove -g nodemon

配置命令别名

通过配置命令别名可以更简单的执行命令

npm run server

npm run start
//start可以省略run
npm start

说明

  • npm start 是项目中常用的一个命令,一般用来重启项目
  • npm run有自动向上级目录查找的特性,和require函数一样
  • 对于陌生的项目,可以查看scripts属性来参考项目的一些操作

cnpm

介绍

cnpm是一个淘宝创建的npmjs.com的完整镜像,也称为 淘宝镜像

操作命令

功能命令
初始化cnpm init / cnpm i
安装包cnpm i uniq
cnpm i -S uniq
cnpm i -D uniq
cnpm i -g nodemon
安装项目依赖cnpm i
删除cnpm r uniq

yarn

yarn特点

  • 速度超快:yarn缓存了每个下载过的包,所以再次使用时无需重复下载,同时利用并行下载以最大资源利用率
  • 超级安全:在执行代码之前,yarn会通过算法校验每个安装包的完整性
  • 超级可靠:使用详细,简洁的锁文件格式和明确的安装算法,能保证在不同系统上无差异工作

yarn安装

npm i -g yarn

yarn常用命令

功能命令
初始化yarn init/yarn init -y
安装包yarn add uniq 生产依赖
yarn add less--dev开发依赖
yarn global add nodemon 全局安装
删除包yarn remove uniq 删除项目依赖包
yarn global remove nodemon 全局删除包
安装项目依赖yarn
运行命令别名yarn<别名> # 不需要添加run

num和yarn的选择

  • 根据锁文件来判断项目的包管理工具
    • npm: package-lock.json
    • yarn: yarn.lock