当前位置: 首页 > Web前端 > JavaScript

package.json中的字段详解(来自官方文档)

时间:2023-03-27 18:29:33 JavaScript

打开npm的官方文档npmDocs{//发现以下31个字段是官方标准"name":"vuex",//必填发布时,不能和已有的npm包同名,可以通过@xxx/vuex添加作用域,参见https://docs.npmjs.com/cli/v8/using-npm/scope“version”:"4.0.2"为范围,//必须发布"private":false,//是否私有,如果要发布公共包,这个值为true。"description":"statemanagementforVue.js",//包的简要描述,"keywords":["vue","vuex"],//关键字搜索,有助于搜索和发现包,"homepage":"https://github.com/vuejs/vuex#readme",//包url主页,"bugs":"https://github.com/vuejs/vuex/issues",//地址问题,"license":"MIT",//license"author":"NicholasC.Zakas",//Author"contributors":[//Codecontributor{"name":"BorisCherny","url":"https://github.com/bcherny","githubUsername":"bcherny"},{"name":"LucianBuzzo","url":"https://github.com/lucianbuzzo","githubUsername":"lucianbuzzo"},],"funding":{//捐赠网址"type":"opencollective","url":"https://opencollective.com/typescript-eslint"},//使用包作为依赖,本地安装时,有些包含的内容没有指定,会一直被包含,比如package.json、README、LICENSE/LICENCE,这个文件中main字段引用的文件,有些没有指定,总会被排除。npmrc,node_modules//文件有更高的优先级。不能被.npmignore和.gitignore排除。“文件”:[“dist”,“types/index.d.ts”,“types/helpers.d.ts”,“types/logger.d.ts”,“types/vue.d.ts”],"main":"dist/vuex.cjs.js",//cjs模块引用入口,执行require("vuex")时调用。"browser":"dist/vuex.esm-browser.js",//浏览器端使用"bin":{//可执行文件路径,它们会被添加到环境变量的PATH中。在控制台上运行>vite命令时调用。"vite":"bin/vite.js"},"man":"","directories":"","repository":{//代码仓库位置"type":"git","url":"git+https://github.com/vuejs/vuex.git"},"scripts":{//执行脚本命令"dev":"vite","build":"vue-tsc--noEmit&&vitebuild","test":"vue-tsc--noEmit&&vitebuild--modetest","preview":"vitepreview"},"config":{}"dependencies":{//生产环境依赖包,这里不要放开发环境包,比如eslint、babel、typescript、sass等"echarts":"5.3.0",//版本严格匹配,会安装5.3.0版本安装时准确。参见https://github.com/npm/node-semver#versions"moment":">2.29.1",//安装大于2.29.1的包,比如2.29.2、2.30.0、3.0.0.参见https://github.com/npm/node-semver#versions"normalize.css":"~8.0.1",//大致大于8.0.1,8.0可以,8.1.x不行;"element-plus":"^2.2.13",//刚好小于第一个非零数。比如^1.2.3,那么<2.0.0就够了,比如^0.2.3,那么<0.3.0就够了,比如0.0.3,那么<0.0.4就够了},"devDependencies":{//只依赖开发的包是打包时不会打进去的模块。"@babel/core":"^7.12.16","@babel/eslint-parser":"^7.12.16","@vue/cli-service":"~5.0.0","eslint-config-prettier":"^8.3.0","sass":"^1.32.7","sass-loader":"^12.0.0",},"peerDependencies":{//如果当前包依赖某个包,则在安装当前包的同时,也安装了依赖包。"vue":"3.2.31"},"peerDependenciesMeta":"","bundleDependencies":"","optionalDependencies":"","overrides":"","engines":{//推荐节点和Ifnpm版本不匹配,不会报错,只推荐符合版本。"node":">=0.10.3<15","npm":"~1.0.20"},"os":["darwin","linux"],//指定模块运行在指定操作系统上system"cpu":["x64","ia32"],//如果代码只运行在某些cpu架构上,你可以指定哪些架构。"publishConfig":{"access":"public",},"workspaces":"",//以下字段不规范,但很重要"module":"dist/vuex.esm-bundler.js",/引用/esm时的入口,执行importvuexfrom"vuex"时调用。注意这个字段不是一个规范,但是被rollup和webpack广泛使用,未来很有可能成为一个规范。"exports":{//导出声明,导入模块和子模块时,会使用不同的路径。".":{"require":"./dist/vuex.cjs.js",//使用require时导入"import":"./dist/vuex.mjs",//使用import时导入"browser":"./dist/vuex.umd.js",//浏览器端使用import"types":"./dist/types/vuex.d.ts",//ts环境使用},".:"./dist/vuex.umd.js",//import"vuex",会加载vuex/dist/vuex.umd.js路径文件"./sub/path":"./secondary.js",//import时"vuex/sub/path",将加载vuex/secondary.js路径文件},"unpkg":"dist/vuex.global.js",//CDN服务地址"jsdelivr":"dist/vuex.global.js",//CDN服务地址"typings":"types/index.d.ts",//定义typescript声明文件的地址}当然,除了上面的字段,还有一些其他的地方,虽然npm官方没有具体说明,但是我们还是用了。例如"browserslist":[">1%","last2versions"],"babel":{presets:["@vue/cli-plugin-babel/preset"],},"prettier":{"trailingComma":"es5","tabWidth":4,"semi":false,"singleQuote":true}注:在package.json中,有3个字段可以定义引用包主模块browserexports/的入口/DefinemultipleEntrypoint(推荐),优先级高于上面。为esm和cjs提供,引入exports以外的路径会报错。具体可以参考https://nodejs.org/dist/lates...esm模块下入口点的优先级,优先级越高,优先级越高会覆盖之前的main-->browser-->module--->exports[import]commonjs模块下入口点的优先级,优先级越高优先级越高,会覆盖前面main-->exports[中的字段require]package.json,如下图是依赖关系,类似因为这个关系Dependency--->vuex---->Dependents,vuex在Dependency中依赖包,而Dependents依赖vuex包.