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

前端模块化身份证:package.json

时间:2023-03-27 18:01:14 JavaScript

什么是package.json?package.json是JavaScript项目的列表。这个文件记录了你项目的名称、版本、依赖等相关信息。也是你在npm上发布项目的基础。可以说,package.json在前端模块化时代,相当于项目的身份证。充分理解package.json的用途和意义,是前端必经的过程。通过npm或yarn命令初始化package.json,快速创建package.json文件:npminit-y//oryarninit-y-y表示创建一个默认的package.json,如果不使用-y,会要求你主动填写json内容。默认文件内容:{"name":"test","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"","license":"ISC"}package.json配置名称项目名称,必填字段,default是当前项目的文件夹名称。字段取值限制:长度必须<=214个字符,只能包含小写字母、'-'、'_'。如果项目要发布到npm,它必须符合这个规范。即使不需要发布到npm,我们也应该遵守这个规范,养成良好的习惯。如果你的项目要发布到npm,名字不能和已有的包名重复,在创建package.json之前,我们可以使用npm命令检查名字是否重复:npmviewpackage-namepackage-name替换为您自己的项目名称。如果npm上有对应的包,则返回包的模块信息。否则返回404version项目版本号,格式为主版本号.次版本号.修订号。主版本号通常表示进行了不兼容的API修改,次版本号通常表示进行了向后兼容的功能添加。修订号表示已经进行了向后兼容的错误修复。如果版本变化较大,运行不稳定,可以先发布之前的版本,在常规版本号后用'-'连接标识符:内部版本(alpha)、公测版本(beta)和候选版本(rc),如:'2.1.0.alpha','2.1.0-beta','2.1.0-rc'在上一个版本之后还可以跟一个小版本,表示不同的上一个版本:'2.1.0.alpha.1''2.1.0.alpha.5'通过npm命令可以查看在线npm包的最新版本和版本记录//查看最新版本npmviewpackage-nameversion//查看全部versionnumbersnpm查看package-nameversiondescription项目的介绍,让别人知道你的项目是做什么用的,这在你发布到npm上时特别有用。mainmain指定项目的入口文件。当你做一个插件发布到npm上时,别人通过import和require等方式导入你的项目时,导入的文件就是main指定的文件。如果不指定main字段,导入时会自动在根目录下搜索index.js、index.json等以索引命名的文件,如果没有找到,导入会报错。scripts定义项目节点脚本,以key-value的形式定义脚本名称的脚本执行内容,在前端项目中通过npmrunxx或yarnxx执行相应的脚本。例如:npmrundev的一个很少有人知道的用法是:通过特殊的命名,可以实现前置命令和后续操作。比如你开发运行项目开发时,希望项目文档服务先启动,可以这样实现:{//..."scripts":{"dev":"npmrunserver","predev":"npmrundocs"}}当你运行命令npmrundev时,predev命令会先被执行,如果你想稍后再执行其他命令,你可以使用postdev命令名。predevpostdev中的dev对应你的dev命令名keywords项目的关键字,有助于在npm上搜索author项目作者,字符串和对象可以使用:{"author":"landejin<1294619453@qq.com>(http://landejin.cn)"}{"author":{"name":"landejin","email":"1294619453@qq.com","url":"http://landejin.cn"}}许可证项目所遵循的协议。Contributors项目合作者,使用数组,可以填写字符串或对象,如author{"contributors":["landejin<1294619453@qq.com>(http://landejin.cn)"]}bugs项目的issuetracker一般可以链接到githubissues{"bugs":"https://github.com/nodejscn/node-api-cn/issues"}engines项目的版本信息,配置只是为了说明{"engines":{"node":">=6.0.0","npm":">=3.0.0","yarn":"^0.13.0"}}homepage项目的主页面,通常是官方等文档documents{"homepage":"http://nodejs.cn"}private声明当前包为私有包,避免误发布到npm上{"private":true}dependencies项目发布运行所依赖的npm包,使用npminstallxx时,配置项会自动写入依赖包{"dependencies":{"vue":"^2.5.2"}}devDependencies项目在开发时所依赖的npm包,该配置中编写的包只在开发过程中使用,不会出现在线上代码中,如ESLint、Less等{"devDependencies":{"autoprefixer":"^7.1.2","babel-core":"^6.22.1"}}browserslist用于标识项目支持的浏览器环境,babel、Autoprefixer等工具会用到此配置"browserslist":[">1%","last2versions","notie<=8"]详细用户及配置请参考:[https://www.npmjs.com/package...]上面只列出了一些常用的配置,package.json和其他不常用的或者在特定环境下的配置ronment不会被列出