package.json 与 package.lock.json

前言

package.jsonpackage.lock.json在项目开发的时候经常接触到,这里做一个整理。

一、package.json

package.json文件通常位于项目的根目录,包含了项目的各种数据:项目的描述信息,项目的相关依赖。

1 创建文件

package.json可以手动创建,也可以自动生成。
node环境下输入以下命令,就会自动生成package.json文件。

npm init
2 json数据
{
    "name": "banana",   // 项目名称
    "version":"0.0.1",  // 版本信息
    "description": "描述",  // 描述信息
    "keywords":["node.js","BANANA", "theme"], // 字符串数组 助于人们在npm库中搜索的时候发现你的模块
    "homepage": "https://banana.com", // 项目的主页地址
    "bugs":{"url":"http://banana/","email":"banana@xxxx.com"}, // 项目问题的反馈issue地址或者一个邮箱
    "license": "ISC",  // 项目的协议
    "author": "banana", // 项目作者
    "contributors":[{"name":"banana","email":"banana@xxxx.com"}], // 项目作者
    "main": "index.js", // 加载入口文件
    "bin": {    // 指定每个内部命令对应的可执行文件的位置。
        "webpack": "bin/index.js",
    }, 
    "man": ["./doc/xxxx"], // 指定当前模块的man文档的位置。
    "directories": "",  // 描述模块的结构
    "repository": {  // 指定一个代码存放地址,对想要为你的项目贡献代码的人有帮助
        "type": "git",
        "url": "https://banana/"
    },
    "scripts": { // 指定了运行脚本命令的npm命令行缩写
      "start": "webpack serve --config webpack.config.dev.js --progress"
    },
    "config": { "port" : "8080" }, // 添加命令行的环境变量。
    "dependencies": {}, // 项目生产环境所依赖的模块
    "devDependencies": { // 项目开发环境所需要的模块
        "webpack": "^5.38.1",
    },
    "engines": {"node": "0.10.x"}, // 运行的环境信息
    "os" : [ "win32", "darwin", "linux" ], // 限制只能在哪个操作系统上运行
    "cpu" : [ "x64", "ia32" ], // 限制模块只能在某种架构的cpu下运行
    "private": false, // 属性被设置为true,npm将拒绝发布它,这是为了防止一个私有模块被无意间发布出去。
    "publishConfig": { // 配合private来使用,如果只想让模块被发布到一个特定的npm仓库,如一个内部的仓库。
        "tag": "1.0.0",
        "registry": "https://registry.npmjs.org/",
        "access": "public"
    }
  }
4 scripts字段

scripts字段指定了node环境的运行脚本的npm命令行缩写。
package.json有以下配置,可以在node命令行输入npm run start

"scripts": {
    "start": "webpack serve --config webpack.config.dev.js --progress"
},
5 dependencies与devDependencies字段
5.1 描述
  • dependencies 项目生产环境所依赖的模块
  • devDependencies 项目开发环境所依赖的模块
5.2 npm install

不同的安装命令,会把依赖写入不同的字段里面,下面列了下清单

5.2.1 dependencies
npm install // 不加参数时,默认会把依赖写入dependencies字段
npm install --s
npm install -S
5.2.2 devDependencies
npm install --save-dev
npm install -D
6 版本号规则

当输入脚本npm install xxx@x.y.z的时候会去仓库下载指定依赖。
所有版本号格式为x.y.z: 主版本.次版本.补丁版本

"devDependencies": {
    "webpack": "^5.38.1",
},

前缀符号

  • ~:只更新补丁版本。 如~1.2.31.2.9可以,而1.3.1不可以。
  • ^:可以更新次版本,补丁版本。 如^1.2.31.3.1 1.5.9 可以。
  • *:可以更新全部版本。如*1.2.32.2.3可以。
  • >:大于指定版本。
  • >=:大于或等于指定版本。
  • <:小于指定版本。
  • <=:小于或等于指定版本。
  • 无符号:特定版本。
  • latest:最新版本。
二、package.lock.json
1 官方描述:

package-lock.json它会在npm更改node_modules目录树或者package.json时自动生成的,它准确的描述了当前项目npm包的依赖树,并且在随后的安装中会根据package-lock.json来安装,保证是相同的一个依赖树,不考虑这个过程中是否有某个依赖有小版本的更新。

{
  "name": "project-name",
  "version": "0.1.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "@ant-design-vue/babel-helper-vue-transform-on": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/@ant-design-vue/babel-helper-vue-transform-on/download/@ant-design-vue/babel-helper-vue-transform-on-1.0.1.tgz",
      "integrity": "sha1-0hnZL04fxeet0hHDR8f6AAUYtiM=",
      "dev": true
    },
  }
}
2 与package.json区别

package.json 描述了依赖的部分信息,
package.lock.json 描述了依赖的详细信息,包括所有依赖的具体版本号,安装地址,sha-1加密后的值,安装在哪个环境,依赖内部所需要的依赖项。

当执行npm install命令的时候,如果项目中有package-lock.json,那么就会从中解析所需安装的依赖,而不是通过package.json

3 注意

cnpm不支持package.lock.json

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容