package.json文件常用属性解释

1,453 阅读2分钟

package.json文件

在Node.js中,模块是一个库或框架,也是一个Node.js项目。Node.js项目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json。

npm install 命令根据这个描述文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

属性解释:

nameversion是必须项,其他为选择项.\color{green}{name和version是必须项,其他为选择项.}

{
  "name": "kkcc", 模块名称
  "version": "1.0.0", 模块版本号
  "description": "tools", 模块描述信息
  "author": "rainbow suger", 作者
  "keywords": [ 一个字符串数组,方便别人搜索到本模块
    "KKCC",
    "VUE"
  ],
  "main": "index.js", 入口文件
  "license": "ISC", 模块制定一个协议,限制用户权限ISC许可证
  "contributors": "rainbow suger", 其他贡献者
  "private": true, 是否私人项目,npm将拒绝发布它
  "scripts": { 运行命令简写 - npm run dev
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "build": "node build/build.js",
    --ext 参数就是用来指定需要检查的扩展名的文件,src 就是指定检查的目录。
    "lint": "eslint --fix --ext .js,.jsx,.vue src",  自动修复
    "lint": "eslint --ext .js,.vue src"
  },
  "dependencies": { 项目运行所需模块 npm install xxx --save
    "axios": "^0.19.2"
  },
  "devDependencies": { 项目开发所需模块 npm install xxx --save -dev
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "babel-eslint": "^8.2.1"
  },
  "peerDependencies": { 开发基础库会指定依赖包的版本范围,主项目(按照此依赖包的项目)安装此依赖的时候,如果主项目react、react-dom库不符合基础库版本要求 会报异常
      "react": ">=16.12.0", 
      "react-dom": ">=16.12.0"
  },
  "engines": { npm node 版本管理
    "node": ">= 6.0.0",
    "npm": ">= 3.0.0"
  },
  "husky": { git commmit 之前检查代码规范,按照eslint等
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {  半自动提升代码质量,修复
    "./src/**/*.{js,vue}": [
      "eslint --fix",
      "git add"
    ]
  },
   数组,需要的组件将自动匹配到并使用,也可以配置到具体的组件参数上
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

browserslist设置语法

通过浏览器过滤的思路实现,默认是兼容所有最新版本.\color{green}{通过浏览器过滤的思路实现,默认是兼容所有最新版本.}

| 例子 | 说明 | |:----:|:----:|:----:|:----:| | > 1% | 全球超过1%人使用的浏览器 | | > 5% in US | 指定国家使用率覆盖 | | last 2 versions | 所有浏览器兼容到最后两个版本根据CanIUse.com追踪的版本 | | Firefox ESR | 火狐最新版本 | | Firefox > 20 | 指定浏览器的版本范围 | | not ie <=8 | 方向排除部分版本 | | Firefox 12.1 | 指定浏览器的兼容到指定版本 | | unreleased versions | 所有浏览器的beta测试版本 | | unreleased Chrome versions | 指定浏览器的测试版本 | | since 2013 | 2013年之后发布的所有版本 |

husky & lint-staged:

为了防止一些不规范的代码 commit并push到远端,我们可以在git命令执行前用一些钩子来检测并阻止。现在大前端主要有两种 git钩子插件:husky(jquery与next.js都在用),pre-commit(antd在用)。

husky能够防止不规范代码被commit、push等,而使用了eslint后,用 lint-staged 可以在 lint 后,更加灵活,执行其他脚本,尝试进行修改错误,比如 eslint --fix 检查后并修复错误等,所以项目中使用了 husky 与 lint-staged 结合使用。