optre
一位前端开发者,keep going!

package.json配置说明详解

基础配置

{
  "name": "my-package", // 包名 必填字段
  "version": "1.0.0", // 版本号 必填字段
  "description": "This is my first npm package.", // 描述信息
  "keywords": [   // 关键词,用于搜索和分类。
    "npm",
    "package",
    "example"
  ],
  "homepage": "https://github.com/user/repo#readme", // 项目主页链接
  "bugs": { // 报告问题的链接
    "url": "https://github.com/user/repo/issues"
  },
  "repository": { // 代码仓库信息
    "type": "git",
    "url": "https://github.com/user/repo.git"
  },
  "license": "MIT", // 许可证信息
  "author": { // 作者信息
    "name": "John Doe",
    "email": "johndoe@example.com",
    "url": "https://johndoe.com"
  },
  "main": "src/index.js", //入口文件
  "bin": { // 用于指定命令行程序的入口文件路径,通常用于全局安装的包。
    "my-cli": "./bin/my-cli.js"
  },
  "type": "module", //指定包的类型。
  "files": [ // 指定需要打包到发布的包中的文件。
    "lib/",
    "index.js",
    "README.md"
  ],
  "engines": { // 指定 Node.js 和 npm 的版本要求
    "node": ">=10.0.0",
    "npm": ">=6.0.0"
  },
  "os": [ // 指定支持的操作系统
    "darwin",
    "linux"
  ],
  "cpu": [ // 指定支持的 CPU 架构
    "x64",
    "arm"
  ],
  "peerDependencies": { // 指定依赖的版本范围
    "react": "^16.8.0",
    "react-dom": "^16.8.0"
  },
  "optionalDependencies": { // 指定可选依赖。
    "canvas": "^2.0.0"
  },
  "resolutions": { // 指定依赖的版本解析规则。
    "some-package": "2.x"
  },
  "dependencies": { // 项目的依赖包
    "react": "^16.8.0",
    "react-dom": "^16.8.0"
  },
  "devDependencies": { // 项目的开发依赖包
    "babel": "^7.0.0",
    "webpack": "^4.0.0"
  },
  "scripts": { //自定义脚本命令,使用 npm run 执行
    "start": "node index.js",
    "test": "jest",
    "build": "webpack"
  },
  "workspaces": [ // 指定工作区的配置,用于管理多个包
    "packages/*"
  ],
  "publishConfig": { // 发布到 npm 的配置
    "access": "public",
    "registry": "https://registry.npmjs.org/"
  },
  "exports": { // 指定你的 JavaScript 模块的入口点(即导出的对象)
    ".": {
      "require": "./dist/main.js",
      "import": "./dist/main.mjs"
    }
  },
  "private": true, // 标记是否为私有包
  "enginesStrict": true //指定 Node.js 和 npm 的版本要求,严格模式
}

代码校验、检测配置

使用了 ESLint、Prettier、Jest 和 Husky

{
  "name": "my-package",
  // ...
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "@babel/preset-react": "^7.0.0",
    "babel-jest": "^26.6.3",
    "eslint": "^7.24.0",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^3.4.0",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "husky": "^6.0.0"
  },
  "scripts": {
    "start": "node index.js",
    "test": "jest",
    "build": "webpack",
    "lint": "eslint src/**/*.{js,jsx}",
    "format": "prettier --write src/**/*.{js,jsx}"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run lint && npm run format && git add ."
    }
  },
  // ...
}
posted on 2023-03-29 10:35  optre  阅读(381)  评论(0编辑  收藏  举报