了解 package.json 文件
什么是 package.json 文件
package.json 是一个 JSON 文件,位于 Javascript/Node 项目的根目录。它包含与项目相关的元数据,用于管理项目的依赖项、脚本、版本等等。
创建package.json文件
创建/生成文件有两种方法package.json。
- Npm 或 Yarn
要使用npm创建 package.json 文件,请npm init在终端中运行。
要使用此方法,您的系统需要安装Node.js。
要使用yarn创建 package.json 文件,请yarn init在终端中运行。
注意:在本文中,我将使用npm命令来展示如何执行特定任务的示例,如果您更喜欢使用命令yarn,请点击此处yarn CLI查看。
运行该命令后,它会询问一些项目信息,并package.json在项目根目录下生成一个文件。生成的文件应类似于下面的示例。
{
"name": "storemanager",
"version": "1.0.0",
"description": "",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
注意:您也可以运行npm init -y或yarn init -y生成package.json具有默认值的文件。
- 手动
要手动创建该文件,请package.json在项目根目录下手动创建一个文件,并添加一个包含所需属性(名称和版本)的空对象。
它应该类似于下面的示例。
{
"name": "storemanager",
"version": "1.0.0"
}
package.json 文件的属性
姓名
`name` 属性是package.json文件中的必填字段,它代表项目的名称。在 `package.json` 文件中为项目指定名称时,需要遵循一些规则。
- 必须小写
- 必须是一个词
- 可以包含连字符和下划线
- 不应以下划线(_)或点(.)开头。
"name": "package.json-mastery"
版本
版本号也是package.json文件中的必填字段。该属性表示项目中模块的当前版本。
版本号字段必须遵循语义化版本控制规范,例如 1.0.2。
"version": "1.0.0"
描述
description 属性用于描述项目并提供有关项目的更多信息。
"description": "Mastery of the package.json file"
发动机
engines 属性是一个 JSON 对象,其中包含键/值对,用于表示/指定应用程序应运行的库和运行时的版本。
"engines": {
"npm": "6.10.0",
"node": "10.14.1"
}
依赖项
dependencies 属性列出了应用程序正常运行所需的模块/包。安装依赖项后,它会被添加到依赖项列表中。
"dependencies": {
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"dotenv": "^6.1.0",
"express": "^4.16.4",
}
要安装依赖项,请在终端运行 `npm install`npm i package或 ` npm install packagenpm install`。其中 `package` 是您尝试安装的软件包的名称。
例如,要安装axios依赖项,请npm install axios在终端中运行。
开发依赖项
devDependencies 属性列出了应用程序运行不需要的模块/包。它们也称为开发依赖项。
"devDependencies": {
"eslint": "^4.19.1",
"mocha": "^6.2.0",
"nodemon": "^1.19.1",
}
要安装开发依赖项,请在终端运行 `devDependency install`npm i package --save-dev或 ` devDependency install` npm install package -D。其中 `package` 是您尝试安装的软件包的名称。
例如,要安装chai devDependency,请npm install chai --save-dev在终端中运行。
脚本
`script` 属性接受一个键值对的 JSON 对象。每个脚本都可以用于执行不同的任务集,例如构建、测试和检查应用程序代码。您可以通过在终端运行 `scripts run`或 `
scripts run` 来运行脚本。npm run scriptnameyarn scriptname
"scripts": {
"start": "node index",
"dev": "nodemon index",
"test": "jest",
"lint": "eslint ./server",
}
例如,要执行上面示例中的开发脚本,请在终端上运行npm run dev或。yarn dev
主要的
主属性是应用程序的入口点,应该指向作为应用程序入口点的文件。
"main": "app.js"
首页
homepage 属性用于指定应用程序/软件包的首页。
"homepage": "https://github.com/Easybuoy/package.json-mastery#readme",
私人的
私有属性默认为 false,但可以设置为 true 以防止发布应用程序/包。
"private": true
执照
此属性表示项目使用的许可证类型。
"license": "MIT"
作者
此属性表示项目的创建者/所有者。
"author": "Ezekiel Ekunola"
仓库
`repository` 关键字是一个 JSON 对象,包含键值对,用于指定应用程序所使用的版本控制系统。您可以指定所使用的版本控制类型、
存储库的 URL,以及存储库中的可选目录。
"repository": {
"type": "git",
"url": "git+https://github.com/Easybuoy/package.json-mastery.git"
}
漏洞
bugs 属性用于指向应用程序存储库的问题页面,或任何可以报告项目问题的地方。
"bugs": {
"url": "https://github.com/Easybuoy/package.json-mastery/issues"
}
关键词
keywords 属性是一个关键字数组,它可以帮助识别您的项目,或者让用户在搜索这些关键字时更容易找到您的项目。
"keywords": ["node", "javascript", "npm", "yarn"]
自定义属性
package.json 文件还可以用于指定包的特定命令,例如 Babel、ESLint、Jest 等等。您可以在包文档中找到具体用法。
下面提供一个自定义属性的示例Jest。
"jest": {
"snapshotSerializers": [
"enzyme-to-json/serializer"
]
}
结合以上所有属性,我们最终可以得到一个package.json类似于以下示例的文件。
{
"name": "package.json-mastery",
"version": "1.0.0",
"description": "Mastery of the package.json file",
"private": false,
"main": "index.js",
"scripts": {
"start": "node index",
"dev": "nodemon index",
"test": "jest"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Easybuoy/package.json-mastery.git"
},
"keywords": [
"node",
"javascript",
"npm",
"yarn"
],
"author": "Ezekiel Ekunola",
"license": "ISC",
"bugs": {
"url": "https://github.com/Easybuoy/package.json-mastery/issues"
},
"homepage": "https://github.com/Easybuoy/package.json-mastery#readme",
"engines": {
"npm": "6.10.0",
"node": "10.14.1"
},
"dependencies": {
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"dotenv": "^6.1.0",
"express": "^4.16.4"
},
"devDependencies": {
"eslint": "^4.19.1",
"mocha": "^6.2.0",
"nodemon": "^1.19.1"
},
"nyc": {
"exclude": [
"server/app.js",
"server/config/",
"server/build"
]
}
}
结论
在本文中,我们已经了解了什么package.json是文件、如何创建文件、文件的不同属性及其用途。
package.json 文件中还可以指定更多属性,如果您想深入了解,请点击此处查看。
如果您对本文有任何疑问或反馈,欢迎留言。
感谢阅读。
本文最初发表于我的博客。
文章来源:https://dev.to/easybuoy/understanding-the-package-json-file-3fdg