• package.json详解


    我们可以在脚手架搭建的vue项目、react项目、anglar项目中看到package.json文件。有时候,我们同webpack,glup等打包工具也需要创建package.json文件。那么package.json的作用是什么,它的各个属性代表的是什么意思,这是本篇文章所要讲述的。

    什么是package.json?

    package.json是存在于JavaScript/node项目根目录下的下的JSON文件。它保存与项目相关的元数据。并用于管理项目的依赖项,脚本,版本等

    怎么创建package.json文件?

    创建package.json有两种方式

    npm/yarn

    npm init
    

    yarn

    yarn init
    

    我们在终端执行npm init命令,它将询问一些有关项目的一些信息,并在项目的根目录下创建一个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(名称)

    name属性是package.json文件中的必填字段,他表示项目的名称,在package.json中设置name属性值时,需要遵循一定的规则

    • 必须是小写的
    • 必须是一个词
    • 可以包含连字符或者下划线
    • 不应该用下_或者.开头

    version

    version也是package.json文件的必填字段。该属性表示项目模块的当前版本。版本字段所需要遵循的规则语义版本控制准则

    engines

    engines属性是键/值对的json对象,用于表示指定应用程序应在其上运行的库和运行的版本

    "engines": {
        "npm": "6.10.0",
        "node": "10.14.1"
      }
    

    dependencies

    dependencies属性表示应用程序运行时候所需要的模块/软件包列表,安装依赖后,它将被添加到dependencies列表中

    "dependencies": {
      "bcryptjs": "^2.4.3",
      "cors": "^2.8.5",
      "dotenv": "^6.1.0",
      "express": "^4.16.4",
    }
    

    devDependencies

    devDependencies属性表示应用程序正常运行不需要的模块或者软件包列表,他们也成为开发依赖项

    "devDependencies": {
        "eslint": "^4.19.1",
        "mocha": "^6.2.0",
        "nodemon": "^1.19.1",
      }
    

    scripts

    scripts属性采用键/值对的JSON对象,每个脚本都可以用于执行不同的任务集,例如构建,测试,整理应用程序。您可以运行npm run scriptName或yarn scriptName在终端运行脚本

    "scripts": {
        "start": "node index",
        "dev": "nodemon index",
        "test": "jest",
        "lint": "eslint ./server",
      }
    

    main

    main属性用作应用程序的入口点,并且应指向应用程序入口点文件

    "main": "app.js"
    

    homepage

    homepage属性用于指定应用程序/程序包的登录页面

    "homepage": "https://github.com/Easybuoy/package.json-mastery#readme",
    

    private

    private属性默认情况下为false,但也可以设置为true,以防止发布应用程序/程序包

    "private": true
    

    license

    license属性表示项目正在使用的许可证类型

    "license": "MIT"
    

    author

    author属性表示项目的创建者/作者

    "author": "dehenliu"
    

    repository

    repository属性是键/值对的JSON对象,用于指定用于管理应用程序的版本控制系统。您可以指定使用的版本控制的类型,存储库的URL以及存储库内的可选目录。

    "repository": {
        "type": "git",
        "url": "git+https://github.com/Easybuoy/package.json-mastery.git"
      }
    

    bugs

    bugs属性用于指向应用程序存储库的问题页面或可以报告项目任何问题的地方

    "bugs": {
        "url": "https://github.com/Easybuoy/package.json-mastery/issues"
      }
    

    keywords

    keywords属性值是一组关键字数组,可以帮助你识别项目并且使其他用户在搜索关键字的时候容易找到你的项目

    "keywords": ["node", "javascript", "npm", "yarn"]
    

    Custom Properties(自定义属性)

    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的属性,可点击此处

  • 相关阅读:
    【BZOJ2424】[HAOI2010]订货 最小费用流
    【BZOJ1935/4822】[Shoi2007]Tree 园丁的烦恼/[Cqoi2017]老C的任务 树状数组
    【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法
    【BZOJ4726】[POI2017]Sabota? 树形DP
    【BZOJ4883】[Lydsy2017年5月月赛]棋盘上的守卫 KM算法
    【BZOJ4881】5月月赛D 线段游戏 树状数组+set
    【BZOJ4518】[Sdoi2016]征途 斜率优化
    【BZOJ4818】[Sdoi2017]序列计数 DP+矩阵乘法
    【BZOJ2553】[BeiJing2011]禁忌 AC自动机+期望DP+矩阵乘法
    【BZOJ3211】花神游历各国 并查集+树状数组
  • 原文地址:https://www.cnblogs.com/dehenliu/p/13852030.html
Copyright © 2020-2023  润新知