Home>Article>Web Front-end> Detailed explanation of packages and package management tools in node
This article will give you an in-depth analysis ofnode's packages and powerful package management tools. I hope it will be helpful to everyone!
Third-party modules in Node.js
Also called package.Just like
Computer
andComputer
refer to the same thing, third-party modules and packages refer to the same concept, but they are called differently. [Related tutorial recommendations:nodejs video tutorial]
Different frombuilt-in modules
andcustom modules
in Node.js, packages are developed bythird-party individuals or teams
, free for everyone to use.
Take notes here:FREE! ! !
Since the built-in modules of Node.js only provide some
low-level API
, theefficiency is very low when developing projects based on built-in modules.
.
The package is encapsulated based on built-in modules, providing a more advanced and convenient API, which greatly improves development efficiency. The relationship between packages and built-in modules is similar to the relationship betweenjQuery and the built-in browser API
.(jq encapsulates the browser's built-in API
)
There is an IT company abroad callednpm, Inc
. This company has a super awesome website:https://www.npmjs.com, it is the world's largest package sharing platform. You can search for any package you need from this website!
npm, Inc.
The company provides a package management tool. We can use this package management tool to download the required packages from thehttps://registry.npmjs.orgserver. Download to local use.
The name of this package management tool isNode Package Manager (referred to as npm package management tool
). This package management tool is installed on the user's computer along with the installation of Node.js.
We can enter
npm -v
in the terminal to view the version number of the npm package management tool
## Note: Our npm version may be different, don’t panic
momentCode example:
const moment = require('moment')const dt = moment().format('YYYY-MM-DD')console.log(dt); // 2022-09-18Note: The
YYYY-MM-DDhere is the symbol identification of the year, month and day, which is found on the website
https://momentjs.com/docs
You can learn more about it in detail.
Installation package commandIf you want to install it yourself If you need the package, you can use the following command:
npm install xxx
ornpm i xxx
(this is the abbreviation, more convenient and faster)
Files that appear after installing the package
After the initial package installation is completed, there will be one more file callednode_modules# in the project folder. ## folder andpackage-lock.json
configuration file.
Among them:
all packagesthat have been installed in the project. When require() imports a third-party package, it searches for and loads the package from this directory.
record the download information of each package in the node_modules directory, such as package name, version number, Download address etc.
orpackage-lock.json
files, npm package management tool They are maintained automatically.
Install the specified version of the packageBy default, use the npm install command to install When installing the package,
will automatically install the latest version of the package. If you need to install a specific version of a package, you can specify the specific version through the@
symbol after the package name
Code example:
在这里将会解决大家一直困惑的问题,
这个版本号那一串数字到底是啥子意思
,在这里黑马哥良心的教学让我直呼好家伙!真心详细!!!(好好看,好好学)包的版本号是以“
点分十进制
”形式进行定义的,总共有三位数字
,例如2.24.0
其中每一位数字所代表的的含义如下:
第1位数字:
大版本
(比如:我们所玩的王者荣耀每过几个月都会有大版本更新,那么的化第一位数字就会发生变化,大家下次观察一波)第2位数字:
功能版本
(比如:王者荣耀的某个版本添加了新的功能,又叫小更新
)第3位数字:
Bug修复版本
(比如:修复了闪退的bug,修复了人物模型的失真bug…)版本号提升的规则:
只要前面的版本号增长了,则后面的版本号归零
包管理配置文件
npm 规定,在
项目根目录中
,必须提供一个叫做package.jso
n 的包管理配置文件。用来记录与项目有关的一些配置信息。例如:
项目的
名称、版本号、描述
等项目中
都用到了哪些包
哪些包只在开发期间会用到
那些包在
开发
和部署
时都需要用到在这里先给大家举一个例子:我们在进行多人项目开发时候,我们把自己写的代码交到码云上,我
们总不能把node_modules
安装的依赖也提交上去啊,所以我们不把node_modules
提交上去,因为第三方模块的所占的体积过大,经常会出现我们的代码总共才1M,第三方包都占30M,所以我们进行剔除.剔除方法:
在.gitignore
文件中输入node_modules
即可!在
项目根目录
中,创建一个叫做package.json
的配置文件,即可用来记录项目中安装了哪些包。从而方便剔除node_modules
目录之后,在团队成员之间共享项目的源代码。注意:今后在项目开发中,一定要把
node_modules
文件夹,添加到.gitignore
忽略文件中。npm 包管理工具提供了一个快捷命令,可以在执行命令时所处的目录中,快速创建
package.json
这个包管理配置文件:npm init -y
注意:
上述命令只能在英文的目录下
成功运行!所以,项目文件夹的名称一定要使用英文命名
,不要使用中文,不能出现空格。
运行npm install
命令安装包的时候,npm 包管理工具会自动把包的名称和版本号
,记录到package.json
中。{ "name": "3", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "art-template": "^4.13.2", "jquery": "^3.6.1", "moment": "^2.22.2" }}package.json 文件中,有一个
dependencies
节点,专门用来记录您使用 npm install 命令安装了哪些包
。例如:我们上面的代码中的"art-template": "^4.13.2","jquery": "^3.6.1","moment": "^2.22.2"
,说明了我们安装了art-template
、jquery
、moment
这三个包!当我们从gitee上拉下来一个项目代码,里面是没有
node_modules
,这就需要我们自己去安装依赖,需要先把所有的包下载到项目中,才能将项目运行起来。否则项目就不会跑起来!那我们怎么做才能让项目跑起来呢?别着急,我们只需在终端中运行
npm install(npm i)
就行了!这里运行这个代码的目的是一次性安装我们需要的所有依赖!
可以运行
npm uninstal
l 命令,来卸载指定的包,比如,我们需要卸载moment
包,我们可以执行代码:npm uninstall moment
注意:npm uninstall
命令执行成功后,会把卸载的包,自动从 package.json 的 dependencies 中移除掉
如果某些包只在
项目开发阶段
会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies
节点中。
与之对应的,如果某些包在开发和项目上线之后都需要用到
,则建议把这些包记录到dependencies
节点中你可以使用如下的命令,将包记录到
devDependencies
节点中://安装指定的包,并且记录到 devDependencies 节点中npm i 包名 -D// 上部代码是简写形式,下部的代码是完整写法:npm install 包名 --save-dev到这里,你就想问一个问题,那我怎么知道我安装的这个包需不需要放在
devDependencies
呢?
一般情况下我们去npm网站中搜索你需要的包,它会提示你该包是否需要记录到devDependencies
中!解决下包速度慢的问题
不难发现,我们在安装包的时候它的速度也太慢了吧?为什么会发生这种情况呢?
因为:在使用 npm 下包的时候,默认从国外的https://registry.npmjs.org/ 服务器进行下载,此时,
网络数据的传输需要经过漫长的海底光缆
,因此下包速度会很慢。为了解决下载速度慢的问题,淘宝在国内搭建了一个服务器,专门把国外官方服务器上的包
同步到国内的服务器
,然后在国内提供下包的服务。从而极大的提高了下包的速度。
镜像(Mirroring
)是一种文件存储形式
,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
我们已经知道了淘宝镜像可以帮助我们快速的下载包,那么怎么才能切换到淘宝镜像源呢?
在终端中执行以下三步:
首先查看我们当前的镜像源:
npm config get registry
将下包的镜像源切换为淘宝镜像源:
npm config set registry=https://registry.npmmirror.com/
查看镜像源是否下载成功 :
npm config get registry
我们如果采取常规的切换镜像源的方法,未免有点繁琐,为了更方便的切换下包的镜像源,我们可以安装
nrm
这个小工具,利用 nrm 提供的终端命令,可以快速查看和切换下包的镜像源
。
将
nrm
安装为全局可用的工具 :npm i nrm -g
查看所有的镜像源 :
nrm ls
将下载包的镜像源切换为 taobao 镜像 :
nrm use taobao
显示这样的话,就说明我们切换成功啦!
包的分类
使用 npm 包管理工具下载的包,共分为两大类,分别是:1.
项目包
2.全局包
那些被安装到项目的
node_modules
目录中的包,都是项目包
。项目包又分为两类,分别是:
开发依赖包
(被记录到devDependencies
节点中的包,只在开发期间
会用到)核心依赖包
(被记录到dependencies
节点中的包,在开发期间和项目上线
之后都会用到)在执行
npm install
命令时,如果提供了-g
参数,则会把包安装为全局包
。全局包会被安装到
C:\Users\用户目录\AppData\Roaming\npm\node_modules
目录下。注意:
只有
工具性质的包
,才有全局安装的必要性。因为它们提供了好用的终端命令。判断某个包是否需要全局安装后才能使用,可以
参考官方提供的使用说明
即可。
i5ting_toc
是一个可以把md 文档转为 html 页面
的小工具(这个真的是嘎嘎好用
,比如,如果我们在网上找学习资源的时候,部分会把笔记记为md文档,我们使用浏览器打开md文档布局特别的难以接受~),使用步骤如下:# 将 i5ting_toc 安装为全局包 npm i -g i5ting_toc # 调用 i5ting_toc ,轻松实现 md 转 html 的功能 i5ting_toc -f 要转的md文件路径 -o上述代码中
-o
的意思是,我们将在默认的浏览器中打开这个转化后的md文件规范的包结构
在清楚了
包的概念、以及如何下载和使用包之后
,接下来,我们深入了解一下包的内部结构
。一个规范的包,它的组成结构,必须符合以下
3 点要求
:
包必须以
单独的目录
而存在包的顶级目录下要必须包含
package.json
这个包管理配置文件
package.json
中必须包含name,version,main
这三个属性,分别代表包的名字、版本号、包的入口
举例:
小结
?本篇文章,详细的解析了node中包的概念和npm,npm在日常开发中根本离不开,在框架中,也要使用npm去安装架构,所以npm的学习必须是要透彻的,不要糊弄过去
更多node相关知识,请访问:nodejs 教程!
The above is the detailed content of Detailed explanation of packages and package management tools in node. For more information, please follow other related articles on the PHP Chinese website!