packagejson配置解析
package.json字段解析
{
"types": "index.d.ts", // 指向 TypeScript 的入口文件,比如说 index.d.ts。有时候你会发现别人在使用 typings,这两者作用相同。
"main": "index.common.js", // 指向支持 CommonJS 模块的入口文件,比如说 index.common.js。这个文件名是自己打包文件的时候配置的,只需要该文件及其依赖文件支持 CommonJS 模块即可
"module": "index.esm.js", // 指向支持 ESM 模块的入口文件,比如说 index.esm.js,同样该文件名也是自定义的。
"browser": "index.js", // 指向支持 UMD 模块的入口文件,通常是 index.js,同样该文件名也是自定义的。
/**
这个字段很实用,已经被很多开源库拿来使用了。当打包工具支持该字段时,上文的四个字段都会被忽略,当然前提是我们在 exports 中做了相应的配置。
该字段的作用分为两部分:
• 可以用来配置哪些文件是可以被用户导入的
• 可以根据不同的条件来配置哪些文件被导入。比如说可以根据当前环境来区分被导入的文件,开发环境时使用未压缩的文件,正式环境时反之
*/
"exports": {
".": {
// 用户 import 使用时
"import": {
// 根据环境引入不同的文件
"node": "./dist/vue.runtime.mjs",
"default": "./dist/vue.runtime.esm.js"
},
// 除了 require 对应 main 字段之外,其它都一样
"module": "index.esm.js",
"browser": "index.umd.js",
"require": "index.common.js",
"types": "index.d.ts"
},
// 用户可以导入 dist 文件夹下的文件
"./dist/*": "./dist/*",
},
/*
首先这个字段是被 Webpack 使用的,作用是协助 Webpack 进行 tree shaking。
多数情况下我们可以直接设置值为 false,这样 Webpack 就会自动帮助我们删除未被 import 的代码,但是在一些情况下不能这样设置。比如说:
• 是否会对包之外的对象进行修改,比如说在 window 上挂载属性等等行为
• 是否在包内 import 了 CSS 文件,尤其对于组件库而言。如有此行为并且将 sideEffects 设置为了 false,那么用户使用组件库的时候就会出现样式丢失的情况,因为 Webpack 在打包过程中没有把 CSS 文件包含进来
*/
"sideEffects": false,
"packageManager": "yarn@2.0.0", // 包管理,可以使项目开发人员统一使用yarn
}
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。