什么是Package.json

package.json是对项目或模块进行描述的Json文件,其中包含了当前项目需要的各种基本信息,比如项目名称/版本/作者,入口文件,依赖项等

此文件具有统一的标准格式,一般情况下都是通过npm init命令创建

配置项

如下是insipid (Electron)项目的package.json文件,大多数项目的package.json文件类似

{
  "name": "insipid",
  "version": "0.1.1",
  "private": true,
  "scripts": {
    "start": "vue-cli-service electron:serve",
    "build": "vue-cli-service electron:build",
    "serve:vue": "vue-cli-service serve",
    "build:vue": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "install": "electron-builder install-app-deps",
    "uninstall": "electron-builder install-app-deps"
  },
  "main": "background.js",
  "dependencies": {
    "@element-plus/icons-vue": "^2.0.9",
    "axios": "^0.27.2",
    "core-js": "^3.8.3",
    "element-plus": "^2.2.13",
    "pinia": "^2.0.18",
    "vue": "^3.2.13",
    "vue-router": "^4.0.3"
  },
  "devDependencies": {
    "@types/electron-devtools-installer": "^2.2.0",
    "@typescript-eslint/eslint-plugin": "^5.4.0",
    "@typescript-eslint/parser": "^5.4.0",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-plugin-typescript": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "@vue/eslint-config-typescript": "^9.1.0",
    "electron": "^13.0.0",
    "electron-devtools-installer": "^3.1.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3",
    "ts-loader": "~8.2.0",
    "typescript": "~4.5.5",
    "vue-cli-plugin-electron-builder": "~2.1.1"
  }
}

name

项目名称,最多为214个字符,只能为小写英文字符/_/.组成

version

项目版本号

author

项目作者,字符串类型/对象

{ 
    "name" : "Eyre Simpson", 
    "email" : "test@demo.com", 
    "url" : "http://test.com/"
}

description

项目描述,字符串类型,用于描述此项目或模块的作用

keywords

项目关键字,需要提供一个字符串数组

private

是否为私有项目,布尔类型值,如果为true,将无法发布到npm

license

项目授权方式,字符串类型,如MIT

bugs

如果发现bug,提交的地址

contributors

项目的贡献人

repository

项目的代码仓库地址

"repository" :{ 
    "type" : "git", 
    "url" : "https://github.com/xxx/xxx.git"
},

homepage

项目主页URL,很多大型项目都会创建一个页面来存放文档和快速入门等资料

dependencies

生产环境下,项目依赖的模块

devDependencies

开发环境下,项目依赖的模块

scripts

项目脚本,如命令 npm run build中,build就是脚本名称

"scripts": {
    "dev": "node dev.js",
    "test": "node test.js",
},

bin

内部命令引用的可执行文件目录

main

默认可执行文件,默认为index.js

module

与main类似,由ES 6方式定义,一般优先使用module方式

eslintConfig

ES Lint配置文件所在位置

engines

项目运行的平台要求

"engines" : { 
    "node" : ">=16.18.0" 
}

browserslist

项目运行的浏览器要求

style

样式文件位置

files

项目包含的文件名数组,在执行npm publish时会根据此数组进行推送,反之,也可以在项目下设置.npmignore文件(与git的.gitignore类似),规定某些文件不会被推送到npm,一般情况下,如果项目下存在gitignore 是不需要再设置npmignore的,在推送到npm时会自动使用git的忽略文件列表

man

项目手册,可指定一个或多个文件作为手册,和linux下man的含义一致