Node Package Manager (npm包管理工具 )

npm包:
Node.js 中的 第三方模块 又叫做 包 。 第三方模块 和 包 指的是同一个概念,只不过叫法不同。

包的来源:
不同于 Node.js 中的内置模块与自定义模块, 包是由第三方个人或团队开发出来的 ,免费供所有人使用。Node.js 中的包都是免费且开源的

https://www.npmjs.com/ 是 全球最大的包共享平台 ,npm公司提供了一个地址为 https://registry.npmjs.org/ 的服务器,来对外共享所有的包。
注:从 https://www.npmjs.com/ 网站上搜索自己所需要的包
从 https://registry.npmjs.org/ 服务器上下载自己需要的包

如何下载包:
我们可以使用包管理工具,从 https://registry.npmjs.org/ 服务器把需要的包下载到本地使用。
Node Package Manager ( npm 包管理工具 ),这个包管理工具随着 Node.js 的安装包一起被安装到了用户的电脑上。
可以在 终端中执行 npm -v 命令,来查看自己电脑上所安装的 npm 包管理工具的版本号。

百度百科:NPM的全称是Node Package Manager,是NodeJS世界的包管理工具,已经成为了非官方的发布
模块(包)的标准。

初次装包后多了哪些文件?
初次装包完成后,在项目文件夹下多一个叫做 node_modules 的文件夹和 package-lock.json 的配置文件。(而package.json需要npm init 初始化

node_modules 文件夹 用来 存放所有已安装到项目中的包 。require() /import导入第三方包时,就是从这个目录中查找并加载包。

package-lock.json 配置文件 用来 记录 node_modules 目录下的每一个包的下载信息 ,例如包的名字、版本号、下载地址等。

注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码,npm 包管理工具会自动维护它们。

package-lock.json的作用以及 和package.json 的区别:
1、锁定安装时的包的版本号,需要上传到git,保证大家的依赖包一致。
2、package-lock.json 是在 npm install时候生成一份文件,用来记录当前状态下实际安装的各个包的具体来源(下载地址)和版本号。(但这里不分开发和生产环境的依赖,全在dependencies中)
3.因为npm是一个用于管理package之间依赖关系的管理器,允许开发者在pacakge.json中间标出自己项目对npm各包的依赖,例如:

"dependencies": {
 "@types/node": "^8.0.33",
}

但这里面的 向上标号^是定义了向后(新)兼容依赖,指如果 types/node的版本是超过8.0.33,并在大版本号8上相同,就允许下载最新版本的 types/node包。
所以package.json里面的版本号只能保证npm i时包的大版本(即版本号的第一位)号相同,并不能保证具体的版本号,这时package-lock.json就派上用场了,它里面的版本号让我们npm i 时直接锁定对应的版本号。

: package.json和package-lock.json保证了大家在协同开发的时候所用的依赖模块版本是一致的。当你的项目新增了一个依赖模块请一定要把package.json和package-lock.json一起上传,这样别人下载项目的时候去更新模块信息,就能得到和你一模一样的模块版本。

手动更改package.json和package-loc.json这两个文件后,npm install是可以直接覆盖掉原先的版本的,所以在协作开发时,这两个文件如果有更新,你的开发环境应该npm install一下才对。

包管理配置文件package.json中,通常包含以下信息:
name - 包名。
version - 包的版本号。
description - 包的描述。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表,生产环境的依赖,开发生产环境都能用
devDependencies -开发环境的依赖
repository - 包代码存放的仓库,包括type属性(值是git或者svn)和url属性
main - main 字段指定了程序的主入口文件,require('moduleName')就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
keywords - 关键字
license-开源文件协议,默认为 ISC

安装指定版本的包:npm i md5@2.3.0

解决下包速度慢的问题:
在这里插入图片描述

切换 npm 的下包镜像源:
为了更方便的切换下包的镜像源,我们可以安装 nrm 这个小工具,利用 nrm 提供的终端命令,可以快速查看和切换下包的镜像源。
在这里插入图片描述
淘宝镜像提供cnpm命令来代替npm:
第一种:
直接安装淘宝提供的cnpm,并更改服务器地址为淘宝的国内地址, 命令:npm install -g cnpm --registry=https://registry.npm.taobao.org,以后安装直接采用cpm替代npm, 例如原生npm命令为:npm install uniq --save,cnpm命令为:cnpm install uniq --save

第二种:
替换npm仓库地址为淘宝镜像地址(推荐) 命令:npm config set registry https://registry.npm.taobao.org, 查看是否更改成功:npm config get registry,以后安装时,依然用npm命令,但是实际是从淘宝国内服务器下载的。

包的分类:
使用 npm 包管理工具下载的包,共分为两大类,分别是项目包和全局包。
1.项目包
那些被安装到 项目 的 node_modules 目录中的包,都是项目包。
项目包又分为两类,分别是:
开发依赖包 (被记录到 devDependencies 节点中的包,只在开发期间会用到,npm i name -save-dev命令下载)
生产依赖包 (被记录到 dependencies 节点中的包,在开发期间和项目上线之后都会用到,npm i name下载)
2. 全局包(只有工具性质的包,才有全局安装的必要性)
在执行 npm install 命令时,如果提供了 -g 参数,则会把包安装为 全局包 。
全局包会被安装到 C:\Users\用户目录\AppData\Roaming\npm\node_modules 目录下。

npm的-s和-save-dev和-g的区别:
npm install name -save-dev 简写(npm i name -save-dev),自动把模块和版本号添加到devdependencies对象中(开发环境)。

npm install name -save 简写(npm install name -s) 自动把模块和版本号添加到dependencies对象中(生产环境和开发环境都能用)。

举例:
构建工具gulp和webpack是用来压缩代码,打包等需要的工具,程序实际运行的时候并不需要,就只需要放在dev中所以要用-save-dev。
项目插件如element ui、echarts这种插件要在生产环境中使用的,就要放在dep中所以就用 -s。一般我们项目插件都要在程序运行中使用的,所以一般都是-s

npm install name -g 全局安装,如vue脚手架
npm install name 直接安装在dependencies中

参考的文章

使用rd或rmdir命令,完整命令:rd  /s  /q   [盘符:\][路径\]新目录名(即文件夹路径)。因为rd只能删除空的文件夹,而如果其中有子文件或子文件
夹的时候就会停下来,这时加上/s就可以直接删除,但是删除过程中会提示是否确定删除,添加了/q,即quiet,安静模式;所
以使用以上命令会完整删除选中的整个文件夹。

DEL  /s  /q 文件夹路径  (只可以删除该文件夹下的所有文件,不包括本身文件夹和其下的文件夹)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值