package.json配置

100 阅读2分钟
{
  "name": "package-name",
  "version": "0.0.1",
  // 主版本: 大的变动、可能影响了向后的兼容性
  // 次要版本: 增加了新的特性不改变已有特性
  // 小版本: 修改bug或其他小的改动
  "description": "这是xxxx",
  "homepage": "主页信息 表示项目首页的url",
  "bugs": { // 接收问题反馈的url email | git issues
    "url": "https://github.com/xxx/xxx/issues",
    "email": ""
  },
  "repository": { // 仓库地址
    "type": "git",
    "url": "git+https://github.com/xxx.git"
  },
  "keywords": [],
  // yarn的workspace功能,能够管理多个子文件夹项目之间的依赖安装等统一命令,以及解决包间本地link问题
  "workSpace": [
  ],
  "author": {
    "name": "lmhtolin",
    "email": "",
    "url":""
  },
  "license": "ISC",
  "files": [ // 代码包下载安装完成时包括的所有文件 [*] 表示所有
    "index.js",
    "createReactApp.js"
  ],
  "main":"index.js", // 项目主要入口,启动项目的文件 -> react
  "private": true, // 无法通过 npm publish 发布代码
  "engines": { // 项目依赖的环境
    "node": ">=12",
    "npm": ">= 4.0.0"
  },
  "browserslist": [ // 兼容
  	"last 2 versions",
    "> 1%"
  ],
  "dependencies": { // 应用依赖/业务依赖 [常用] npm i xxx --save 线上代码的一部分
    "foo": ">1.0.0 <=3.0.0", // ^1.2.3 兼容版本 ~1.2.3 最近可用
  },
  "devDependencies": {}, // 开发依赖 [常用] npm i xxx --save-dev 单元测试 打包工具 等
  "peerDependencies": { // 同伴依赖
    // 发布包的需求可能用到 提示宿主环境去安装插件,解决插件与所依赖包不一致的问题 例如 element-ui
    // 意思就是 如果安装本包,则需要按照要求安装A,B,C包
    // 如果组件与环境依赖的包不一致,则会告警 手动安装 组件的依赖包
  },
  "bundledDependencies": [ // 打包依赖
    // npm pack
    // .tgc 压缩包
    // 必须在 devDependencies dependencies 声明过 npm i xxx.tgz 就同样会安装这里的两个依赖
  ],
  "optionalDependencies": {}, // 可选依赖
  "bin": { // 例子 create-react-app rimraf
    // npm 会在全局可执行 bin 文件安装目录(/usr/local/bin) 创建一个指向 对应包的 软连接
    // 如果局部安装 npm 会在本地创建一个可执行文件的 软链接
    // 这时候可直接输入 ./node_modules/.bin/rimraf 执行 -> npx rimraf
    "create-react-app": "index.js"
    // #! /usr/bin/env node <- 软链接 <path node位置> node index.js 第一行
  },
  "scripts": { // 自定义脚本命令
    // npm run 新建一个shell, 该脚本会将当前项目的 node_modules/.bin 的绝对路径加入环境变量 PATH 中,执行结束再将环境变量恢复原样
    // npm run env 查看脚本运行的环境变量
    // shell 命令
    // mkdir xxx 创建文件夹
    // 多命令 并行执行 npm run script1 & npm run script2 串行执行 npm run script1 && npm run script2
    // 钩子 prescript -> script -> postscript 例如 npm run build => npm run prebuild -> npm run build -> npm run postbuild
    // 传参 process.argv -> webpack.config.js
    // "dev": "webpack --params=123 --name=lmhtolin", // 截取参数 const rawArgv = process.argv.slice(2)
    // "dev": "NODE_ENV=production webpack", // 如果阻塞 需要加上 cross-env -> npm i cross-env -D
  },
  "sideEffects": false // 正常对所有模块进行 tree shaking
	"sideEffects": ['*.css','@babel/polyfill'] // 在数组里面排除不需要使用tree shaking的模块
}
// webpack.config.js
const path = require("path");
// console.log(process.argv) // -> string[]
const rawArgv = require("minimist")(process.argv.slice(2)); // object {params: 123, name: 'lmhtolin'} 即传过来的参数
const env = process.env.NODE_ENV; // production