一文轻松搞定package.json

113 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

在大家进行日常开发过程中,package.json不断的在大家面前飘过。对于大家忙碌的开发过程中,可能不会过多的关注package.json。这里我们就针对package.json的一些可能会使用到的配置项进行说明,希望给大家带来帮助。

name

这个想必大家进行初始化项目的时候已经见过了很多遍了吧。进行npm init的时候,让大家二次确认的package name就是这个配置项。

QQ图片20220928223918.png

如果想要发布第三方依赖的时候,那么name就相当重要了,name字段对应的就是发到npm仓库的依赖名称。

需要注意的是:

  • 名称长度小于等于214个字符
  • 名称不能与已有的依赖名重复(如果需要发布到仓库的话)

version

相信大家对于依赖的版本已经相当熟悉了,任何一个第三方依赖都可以在仓库里面查看到它的所有版本记录

QQ图片20220928224249.png

对于要发布的依赖来说,version字段至关重要。version字段的变更意味着依赖版本的变更。有关version字段的一些说明:

  • alpha 版本:内部测试版本
  • beta 版本:对外开放测试版本
  • rc 版本: 候选版本(即将对外发布正式版本)

对于依赖安装的时候,如果不存在package-lock.json或者yarn.lock文件,会根据package中的依赖版本进行安装。

  • ~1.0.0 匹配符合版本要求的最高补丁版本 1.0.x
  • ^1.0.0 匹配符合版本要求的次版本号 1.x.x
  • 1.0.0 只会安装1.2.3版本

bin

这个字段对于脚手架开发来说至关重要,bin字段指向了可执行文件的位置,同时对外暴露了命令的名称。通过bin映射文件,由于需要通过node环境来执行,所以要以#!/usr/bin/env node开头。

例如,vue cli的bin字段:

    "bin": {
        "vue": "bin/vue.js"
    }

如果进行全局安装的时候,会将bin指定的可执行文件添加到全局环境变量中。

dependencies

项目安装的依赖,通过--save方式安装的依赖都会进入到dependencies中,对于这种方式安装的依赖最终都会打包进项目。

devDependencies

项目开发环境安装的依赖,通过--save-dev方式安装的依赖都会进入到devDependencies中,比如说常用的一些css-loader、babel-loader等loader,常用的一些html-webpack-plugin等plugin。

需要注意的是,即使是安装到devDependencies中,但是在项目中引用的话,还是会导致依赖最终会构建到项目中去。

peerDependencies

peerDependencies对于进行插件或者第三方依赖开发的时候很重要。比方说进行webpack的使用的时候,webpack依赖于webpack-cli,为了避免重复安装依赖,这时候就需要peerDependencies出场了。

    "peerDependenciesMeta": {
        "webpack-cli": {
            "optional": true
        }
    }

engines

大家进行团队开发的时候,或许会碰到node版本不一致导致项目运行不起来的情况。对于这种情况我们就可以通过配置engines来管理npm或者node的版本,保证大家的版本基本一致。

    {
      "engines": {
        "node": "16.5.0",
        "npm": "7.19.1"
      }
    }

结尾

好了,这些应该就是大家进行一些日常开发过程中可能会使用到的一些配置了,后续我们会继续聊一下npm安装依赖的机制。

码字不易,跪求jym点赞收藏。

欢迎大家在下方进行留言讨论。