一篇文章讲清楚关于package.json几点让人迷惑的知识点,建议收藏

2022-10-28 18:46:39 浏览数 (1)

持续就是力量,抓紧'今天' 一天,认真地过日子。假如每天都努力工作,并设法改变一些事情,或许就能预见明日的光景。一天天累积起来的就已非常可观,5年,10年后的成就必然会辉煌。

--出自《稻盛和夫给年轻人的忠告》

01

前言

上一篇文章写了关于在命令行中输入 `npm run xxx` 之后,系统为我们做了哪

些工作,以及背后的基本原理是怎么样的。

接下来,我们继续说一下关于 package.json 的几点知识。本来这篇文章是打

算详细讲一下package.json的详情用法的,不过我觉得大家可能都已经对其

用法比较明白了。

所以我们这篇文章重点讲一下关于package.json几个比较重要和让人迷的知

识点。

02

package.json 和 package-lock.json两个文件的区别

众所周知,当我们运行完 `npm install` 命令之后,在生成两个比较重要的文件和文件夹:package-lock.json 和 node_modules。

对于 packags.json 我们都已经比较了解了,它主要是描述我们项目或者模块的一个清单文件。这个文件是不能缺少的。那么 package-lock.json是干什么的呢。我们简单看一下里面的内容

代码语言:javascript复制
{
  "name": "work-p-site",
  "version": "0.0.0",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "": {
      "name": "work-p-site",
      "version": "0.0.0",
      "dependencies": {
        "normalize.css": "^8.0.1",
        "vue": "^3.2.16",
        "vue-router": "^4.0.12"
      },
      "devDependencies": {
        "@vicons/ionicons5": "^0.11.0",
        "@vitejs/plugin-vue": "^1.9.3",
        "naive-ui": "^2.24.0",
        "sass": "^1.43.3",
        "sass-loader": "^12.2.0",
        "typescript": "^4.4.3",
        "vfonts": "^0.1.0",
        "vite": "^2.6.4",
        "vite-plugin-components": "^0.13.3",
        "vue-tsc": "^0.3.0"
      }
    },
}

当然这里面的内容是非常多的,我已经删除了很多很多,大约有 3000 行。我们发现和 package.json 长的很像,但也不完全一样(废话,完全一样,要这个文件干啥)

简单一句话就是:

它可以锁定我们的版本号和依赖信息,而且一定要提交到git上。这样我们下次就可以使用它安装依赖。从而保持每个机器上或者每个开发人员的手上用的依赖都是一样的。

它是 npm 自动为我们安装生成的,所以我们不平时不需要修改,只要注意一下就把它添加到版本管理中就好。

02

package.json中的依赖版本号开头符号是什么意思

先来看一下我们平时用的依赖长什么样:

代码语言:javascript复制
"dependencies": {
    "axios": "0.21.0",
    "clipboard": "^2.0.8",
    "core-js": "^3.6.5",
    "echarts": "^5.0.2",
    "element-china-area-data": "~5.0.2",
    "element-ui": ">=2.14.1",
    "font-awesome": "^4.7.0",
    "js-cookie": "^2.2.1",
    "marked": "^2.0.3",
    "mockjs": "^1.1.0",
    "normalize.css": "^8.0.1",
  },

可以看到版本号之前符号挺多有的还没有符号。下面我们重点说一下都是什么意思:

  • 没有指定特殊符号
代码语言:javascript复制
"xxxxx": "1.0.0"   

在 npm install 的时候,明确指出我要安装这个版本。

  • 以 ^ 开头的
代码语言:javascript复制
"xxxxx": "^1.0.0"   

在 npm install 的时候,我要安装最小版本是 1.0.0的,可以安装 1.0.1等更高的版本

  • 以 ~ 开头的
代码语言:javascript复制
"xxxxx": "~1.1.1"   

在 npm install 的时候,要安装大于 1.1.1 但是小于 1.2.0的所有版本,如1.1.2、1.1.3等。但不能大于 1.2.0

  • latest
代码语言:javascript复制
"xxxxx": "latest"   

在 npm install 的时候,永远保证最新的。

  • >=
代码语言:javascript复制
"xxxxx": ">=1.1.0"   

在 npm install 的时候,必须大于或者等于 1.1.0版本

03

总结

关于 package.json 还有很多有意思的用法,基于篇幅,我们先介绍这么多,如果以后有机会我们再介绍其它的用法

0 人点赞