从零开始开发自己的脚手架工具cli系列:package.json 详细配置指南

83 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

package.json

{
  "name": "calamus-cli",   // cli包名称,注意如果需要发布到npm不能重复
  "version": "0.1.0",  // 包版本,注意如果需要发布到npm版本不能重复
  "description": "",  // 项目描述
  "main": "index.js",  // 项目入口文件
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "calamus": "calamus-cli" 
  },
  "bin": {
    "calamus-cli": "./bin/calamus" // 执行命令别名
  },
  "publishConfig": {
    "access": "public"
  },
  "keywords": [],   // 关键字
  "author": "calamus",  // 作者
  "license": "ISC", // 协议
  "dependencies": {    // 其他依赖
    "boxen": "^4.1.0",
    "chalk": "^3.0.0",
    "esm": "^3.2.25",
    "execa": "^3.3.0",
    "inquirer": "^7.0.0",
    "listr": "^0.14.3",
    "log-symbols": "^3.0.0",
    "ora": "^4.0.3",
    "update-notifier": "^3.0.1"
  },
  "devDependencies": {
    "commander": "^4.0.1",
    "download-git-repo": "^3.0.2",
    "fs": "0.0.1-security",
    "glob": "^7.1.6",
    "path": "^0.12.7",
    "rimraf": "^3.0.0",
    "tildify": "^2.0.0",
    "user-home": "^2.0.0"
  },
   "files": [ // 发布时包含的文件夹目录,不在改配置里的发布包后不会有
    "bin",
    "lib",
    "src",
    "utils",
    "package.json",
    "readme.md"
  ],
}

其他常用属性

  • version 此属性遵循版本的语义版本控制记法,这意味着版本始终以 3 个数字表示:x.x.x

第一个数字是主版本号,第二个数字是次版本号,第三个数字是补丁版本号。

这些数字中的含义是:仅修复缺陷的版本是补丁版本,引入向后兼容的更改的版本是次版本,具有重大更改的是主版本。

  • homepage 主页
"homepage": "https://github.com/owner/project#readme"
  • private 如果设置了private,则无法推送到npm
"private": true
  • publishConfig 推送的一些设置

  • author 字符串标识作者名称,也可以写成对象的形式

"author": {
    "name": "NodeJS中文网",
    "email": "mail@nodejs.cn",
    "url": "http://nodejs.cn"
  }
  • contributors 除作者外,该项目可以有一个或多个贡献者。 此属性是列出他们的数组。
{
  "contributors": ["NodeJS中文网 <mail@nodejs.cn> (http://nodejs.cn))"]
}

同author一样,也可以使用以下格式:

{
  "contributors": [
    {
      "name": "NodeJS中文网",
      "email": "mail@nodejs.cn",
      "url": "http://nodejs.cn"
    }
  ]
}
  • bugs 链接到软件包的问题跟踪器,最常用的是 GitHub 的 issues 页面。
{
  "bugs": "https://github.com/nodejscn/node-api-cn/issues"
}
  • keywords 包含与软件包功能相关的关键字数组。
"keywords": [
  "email",
  "machine learning",
  "ai"
]