美文网首页
package.json 与 package.lock.json

package.json 与 package.lock.json

作者: 香蕉不拿呢 | 来源:发表于2022-01-19 11:03 被阅读0次
    前言

    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

    相关文章

      网友评论

          本文标题:package.json 与 package.lock.json

          本文链接:https://www.haomeiwen.com/subject/vhlrhrtx.html