Package.json 配置完全解读,充分了解这些配置有助于我们提高开发的效率( 六 )


"os" ["linux"]   // 适用的操作系统"os" ["!win32"]  // 禁用的操作系统5. cpu该配置和OS配置类似,用CPU可以更准确的限制用户的安装环境:
"cpu" ["x64", "AMD64"]   // 适用的cpu"cpu" ["!arm", "!mips"]  // 禁用的cpu可以看到,黑名单和白名单的区别就是,黑名单在前面加了一个“!” 。
6. licenselicense 字段用于指定软件的开源协议,开源协议表述了其他人获得代码后拥有的权利,可以对代码进行何种操作,何种操作又是被禁止的 。常见的协议如下:

  • MIT :只要用户在项目副本中包含了版权声明和许可声明,他们就可以拿你的代码做任何想做的事情,你也无需承担任何责任 。
  • Apache :类似于 MIT  , 同时还包含了贡献者向用户提供专利授权相关的条款 。
  • GPL :修改项目代码的用户再次分发源码或二进制代码时 , 必须公布他的相关修改 。
可以这样来声明该字段:
"license": "MIT"七、第三方配置package.json 文件还可以承载命令特有的配置,例如 Babel、ESLint 等 。它们每个都有特有的属性,例如 eslintConfig、babel 等 。它们是命令特有的 , 可以在相应的命令/项目文档中找到如何使用它们 。下面来看几个常用的第三方配置项 。
1. typingstypings字段用来指定TypeScript的入口文件:
"typings": "types/index.d.ts",该字段的作用和main配置相同 。
2. eslintConfigeslint的配置可以写在单独的配置文件.eslintrc.json 中 , 也可以写在package.json文件的eslintConfig配置项中 。
"eslintConfig": {      "root": true,      "env": {        "node": true      },      "extends": [        "plugin:vue/essential",        "eslint:recommended"      ],      "rules": {},      "parserOptions": {        "parser": "babel-eslint"     },}3. babelbabel用来指定Babel的编译配置 , 代码如下:
"babel": { "presets": ["@babel/preset-env"], "plugins": [...]}4. unpkg使用该字段可以让 npm 上所有的文件都开启 cdn 服务,该CND服务由unpkg提供:
"unpkg": "dist/vue.js"5. lint-stagedlint-staged是一个在Git暂存文件上运行linters的工具,配置后每次修改一个文件即可给所有文件执行一次lint检查 , 通常配合gitHooks一起使用 。
"lint-staged": { "*.js": [   "eslint --fix",    "git add"  ]}使用lint-staged时,每次提交代码只会检查当前改动的文件 。
6. gitHooksgitHooks用来定义一个钩子,在提交(commit)之前执行ESlint检查 。在执行lint命令后 , 会自动修复暂存区的文件 。修复之后的文件并不会存储在暂存区,所以需要用git add命令将修复后的文件重新加入暂存区 。在执行pre-commit命令之后,如果没有错误,就会执行git commit命令:
"gitHooks": { "pre-commit": "lint-staged"}这里就是配合上面的lint-staged来进行代码的检查操作 。
7. browserslistbrowserslist字段用来告知支持哪些浏览器及版本 。Babel、Autoprefixer 和其他工具会用到它,以将所需的 polyfill 和 fallback 添加到目标浏览器 。比如最上面的例子中的该字段值:
"browserslist": {  "production": [    ">0.2%",    "not dead",    "not op_mini all"  ],  "development": [    "last 1 chrome version",    "last 1 firefox version",    "last 1 safari version"  ]}


推荐阅读