首页 前端知识 Nodejs基础之包管理工具npm(二),灵魂拷问

Nodejs基础之包管理工具npm(二),灵魂拷问

2024-08-08 23:08:25 前端知识 前端哥 35 203 我要收藏
  1. 去 www.npmjs.com 搜索我们 MD5加密包

在这里插入图片描述

  1. 在我们的根目录下打开 cmd 下载

我们使用 npm install md5 --save 下载,将 md5 写入 package.json

在这里插入图片描述

  1. 使用 MD5

// 加密 123456

var md5 = require(‘md5’);

// 实现 md5 加密的功能

console.log(md5(‘123456’));

在这里插入图片描述

  • 这样我们就实现了导模块并使用模块,此时查看我们的package.json 文件

{

“name”: “mytest”,

“version”: “1.0.0”,

“description”: “”,

“main”: “index.js”,

“scripts”: {

“test”: “echo “Error: no test specified” && exit 1”

},

“keywords”: [],

“author”: “”,

“license”: “ISC”,

“dependencies”: {

“md5”: “^2.3.0”

},

“devDependencies”: {

}

}

  • dependencies -> 配置当前程序所依赖的其他包

  • devDependencie -> 配置当前程序所依赖的其他包,比如一些工具之类的配置在这里

在这里插入图片描述

dependencies 与 devDependencies 之间的区别?

  • 使用 npm install node_module --save 会自动更新 dependencies 字段值

  • 使用 npm install node_module --save -dev 会自动更新 devDependencies 字段值

1.1、package.json


  • package.json 是项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。

  • 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题

  • 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作

  • 每次创建新项目,记得先 npm init 生成package.json

1.2、package.json常见属性


必须填写的属性:name、version

  • name 是项目的名称

  • version 是当前项目的版本号

  • description是描述信息,很多时候是作为项目的基本描述

  • author是作者相关信息(发布时用到)

  • license是开源协议(发布时用到)

private 属性

  • private属性记录当前的项目是否是私有的

  • 当值为true时,npm是不能发布它的,这是防止私有项目或模块发布出去的方式

main 属性

  • 设置程序的入口。

scripts 属性

  • scripts 属性用于配置一些脚本命令,以键值对的形式存在

  • 配置后我们可以通过 npm run 命令的key来执行这个命令

  • npm start和npm run start的区别是什么?

  • 它们是等价的

  • 对于常用的start、test、stop、restart可以省略掉run直接通过npm start等方式运行

dependencies 属性:项目依赖

  • dependencies 属性是指定无论开发环境还是生成环境都需要依赖的包

  • 使用npm install 包名命令下载的文件会默认被添加到 package.json 文件的 dependencies 字段中

  • 与之对应的是devDependencies

devDependencies 属性:开发依赖

  • 一些包在生成环境是不需要的,比如webpack、babel等

  • 这个时候我们会通过npm install webpack --save-dev,将它安装到devDependencies属性中

  • 那么在生成环境如何保证不安装这些包呢?

  • 生成环境不需要安装时,我们需要通过npm install --production 来安装文件的依赖

1.3、版本管理的问题


我们会发现安装的依赖版本出现:^2.0.3或~2.0.3,这是什么意思呢?

我们这里解释一下^和~的区别:

  • ^x.y.z:表示x是保持不变的,y和z永远安装最新的版本

  • ~x.y.z:表示x和y保持不变的,z永远安装最新的版本

1.4、npm install 命令


安装npm包分两种情况:

  • 全局安装(global install): npm install ModuleName -g

  • 项目(局部)安装(local install): npm install

全局安装:

  • 全局安装是直接将某个包安装到全局

但是很多人对全局安装有一些误会:

  • 通常使用npm全局安装的包都是一些工具包:yarn、webpack等

  • 并不是类似于axios、express、koa等库文件

  • 所以全局安装了之后并不能让我们在所有的项目中使用axios等库


  1. npm -v 查看 npm 版本

  2. 使用 npm 命令安装模块 npm install ModuleName

我们推荐安装模块后面加上 --save,这样可以安装模块并把模块写入 package.json

// 如安装 jq 模块

npm install jquery --save

  1. 卸载模块 npm uninstall moduleName

  2. 查看当前目录下已安装的 node 包 npm list

  3. 查看 模块 的版本 npm info 模块

// 如查看 jquery 的版本

npm info 模块

  1. 指定版本安装 npm install jquery@1.8.0 --save 🔥

1.5、项目安装


项目安装会在当前目录下生产一个node_modules 文件夹

局部安装分为开发时依赖和生产时依赖

在这里插入图片描述

1.6、npm install 原理


执行npm install它背后帮助我们完成了什么操作?

我们会发现还有一个成为package-lock.json的文件,它的作用是什么?

从npm5开始,npm支持缓存策略(来自yarn的压力),缓存有什么作用呢?

在这里插入图片描述

npm install会检测是有package-lock.json文件:

  • 没有lock文件

  • 分析依赖关系,这是因为我们可能包会依赖其他的包,并且多个包之间会产生相同依赖的情况

  • 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包)

  • 获取到压缩包后会对压缩包进行缓存(从npm5开始有的)

  • 将压缩包解压到项目的node_modules文件夹中

  • 有lock文件

  • 检测lock中包的版本是否和package.json中一致

  • 不一致,那么会重新构建依赖关系,直接会走顶层的流程

  • 一致的情况下,会去优先查找缓存

  • 没有找到,会从registry仓库下载,直接走顶层流程

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里可以免费领取。


*

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。

技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里可以免费领取。

[外链图片转存中…(img-ExfyHD2c-1712196757628)]

转载请注明出处或者链接地址:https://www.qianduange.cn//article/15108.html
标签
评论
发布的文章

Jquery (第三章笔记)

2024-08-18 00:08:37

jquery实现tab切换简单好用

2024-08-18 00:08:35

jQuery Cookie 插件使用教程

2024-08-14 22:08:01

jQuery的DOM操作

2024-08-18 00:08:21

echarts显示中国地图

2024-08-18 00:08:11

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!