关于npm的记录

  1. npm的官方网站:https://www.npmjs.com 可以查询所有可以使用npm下载的包和版本,也可以自己注册发布自己的开源代码包;

  2. npm 的包的管理:package.json配置文件

    1. 文件的生成获取:

      1. 手动创建项目:npm init -y
      2. 通过手脚架创建项目,手脚架会帮我们生成这个文件(例如vue项目的创建)
    2. 常见的属性说明:

      {
        "name": "npmdemo",  //项目名称
        "version": "1.0.0", //当前项目的版本号;
        "description": "", //是描述信息,很多时候是作为项目的基本描述;
        "main": "index.js", //设置程序的入口,
        "private": true, //private属性记录当前的项目是否是私有的,当值为true时,npm是不能发布它的,这是防止私有项目或模块发布出去的方式;vue项目私有项目创建的时候一般都是默认给true的
        "scripts": { //用于配置一些脚本命令,以键值对的形式存在;配置后我们可以通过 npm run 命令的key来执行这个命令
          "why": "node ./scripts/why.js",
          "test": "",
          "start": ""
        },
        "author": "", //作者相关信息(发布时用到);
        "license": "ISC", //开源协议(发布时用到);
        "dependencies": {//指定无论开发环境还是生成环境都需要依赖的包;通常是我们项目实际开发用到的一些库模块vue、vuex等,安装命令npm install webpack --save(这个可以简写为-S)
          "axios": "^0.24.0",
          "element-plus": "^1.2.0-beta.1",
          "vue": "^2.6.14"
        },
        "devDependencies": { //一些包在生成环境是不需要的,比如webpack、babel等,我们会通过 npm install webpack --save-dev(这个可以简写为-D),将它安装到devDependencies属性中;
          "webpack": "^5.61.0",
          "webpack-cli": "^4.9.1"
        },//peerDependencies属性:有一种项目依赖关系是对等依赖,也就是你依赖的一个包,它必须是以另外一个宿主包为前提的;比如element-plus是依赖于vue3的,ant design是依赖于react、react-dom;
        "engines": {},//用于指定Node和NPM的版本号
        "browserslist": {} //用于配置打包后的JavaScript浏览器的兼容情况
      }
      
    3. 版本号

      1. 版本规范是X.Y.Z(^2.0.3或~2.0.3):
        1. X主版本号(major):当你做了不兼容的 API 修改(可能不兼容之前的版本);
        2. Y次版本号(minor):当你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本);
        3. Z修订号(patch):当你做了向下兼容的问题修正(没有新功能,修复了之前版本的bug);
      2. ^和~的区别:
        1. ^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;
        2. ~x.y.z:表示x和y保持不变的,z永远安装最新的版本
    4. npm install命令

      1. 安装npm包分两种情况:
        1. 全局安装(global install): npm install webpack -g;
        2. 项目(局部)安装(local install): npm install webpack
      2. 两种安装方式 的区别:通常使用npm全局安装的包都是一些工具包:yarn、webpack等;并不是类似于 axios、express、koa等库文件;所以全局安装了之后并不能让我们在所有的项目中使用 axios等库;
    5. npm install的原理

      1. 执行install命令:

        1. 有package-lock.json文件:

          1. 检测lock中包的版本是否和package.json中一致(会按照semver版本规范检测,~x.y.z);

            1. 不一致,那么会重新构建依赖关系,直接会走顶层的流程;
            2. 一致的情况下,会去优先查找缓存
              1. 没有找到,会从registry仓库下载,直接走顶层流程;
              2. 查找到,会获取缓存中的压缩文件,并且将压缩文件解压到node_modules文件夹中;
        2. 没有package-lock.json文件:

          1. 分析依赖关系,这是因为我们可能包会依赖其他的包,并且多个包之间会产生相同依赖的情况;
          2. 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包);
          3. 获取到压缩包后会对压缩包进行缓存(从npm5开始有的,建立索引,方便下次安装同样的包查找);
          4. 将压缩包解压到项目的node_modules文件夹中
posted @   LL幻  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示