package.json第三方配置
第三方配置
一些第三方库或应用在进行某些内部处理时会依赖这些字段,使用它们时需要安装对应的第三方库。
types 或者 typings
指定 TypeScript
的类型定义的入口文件
"main": "/index.js"
"types": "./types/index.d.ts",
如果声明文件定义在项目根目录下且命名为index.d.ts
,就不需要设置types
。
unpkg
可以让 npm
上所有的文件都开启 CDN
服务。
比如 vue package.json
的 unpkg
定义为 dist/vue.global.js
"unpkg": "dist/vue.global.js",
当我们想通过 CDN
的方式使用链接引入 vue
时。
访问 https://unpkg.com/vue
会重定向到 https://unpkg.com/vue@3.2.37/dist/vue.global.js
,其中 3.2.27 是 Vue
的最新版本。
jsdelivr
与 unpkg
类似,vue
通过如下的配置
"jsdelivr": "dist/vue.global.js",
访问 https://cdn.jsdelivr.net/npm/vue
实际上获取到的是 jsdelivr
字段里配置的文件地址。
browserslist
设置项目的浏览器兼容情况。babel
和 autoprefixer
等工具会使用该配置对代码进行转换。当然你也可以使用 .browserslistrc
单文件配置。
"browserslist": [
"> 1%",
"last 2 versions"
]
sideEffects
显示设置某些模块具有副作用,用于 webpack
的 tree-shaking
优化。
比如在项目中整体引入 Ant Design 组件库的 css 文件。
import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'
如果 Ant Design
的 package.json
里不设置 sideEffects
,那么 webapck
构建打包时会认为这段代码只是引入了但并没有使用,可以 tree-shaking
剔除掉,最终导致产物缺少样式。
所以 Ant Design
在 package.json
里设置了如下的 sideEffects
,来告知 webpack
,这些文件具有副作用,引入后不能被删除。
"sideEffects": [
"dist/*",
"es/**/style/*",
"lib/**/style/*",
"*.less"
]
lint-staged
lint-staged
是用于对 git
的暂存区的文件进行操作的工具,比如可以在代码提交前执行 lint 校验,类型检查,图片优化等操作。
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": [
"eslint --fix",
"git add -A"
]
}
lint-staged
通常配合 husky
这样的 git-hooks
工具一起使用。git-hooks
用来定义一个钩子,这些钩子方法会在 git
工作流程中比如 pre-commit
,commit-msg
时触发,可以把 lint-staged
放到这些钩子方法中。
gitHooks
用来定义一个钩子,在提交(commit
)之前执行 ESlint
检查。在执行 lint
命令后,会自动修复暂存区的文件。修复之后的文件并不会存储在暂存区,所以需要用 git add
命令将修复后的文件重新加入暂存区。在执行 pre-commit
命令之后,如果没有错误,就会执行 git commit
命令:
"gitHooks": {
"pre-commit": "lint-staged"
}