package.json翻译

2023年 8月 15日 31.7k 0

描述

JSON文件,实际的JSON,不是js对象

文档中的行为会受到npm config配置影响

name

如果要发布包name和version是必须填写

规则

  • 小于214个字符
  • 不允许大写
  • name不能包含任何非url安全的字符
  • 建议

  • 不要在name中使用js或者node,可以在使用engines字段指定引擎(js或者node环境)
  • name尽量简短
  • 如果要发布名称不能重复,可以在npm官网查看是否被注册
  • 名称可以用作用域作为前缀@myorg/ myppackage,具体请看scope
  • version

    发布时version必填,version可以被semver解析

    description

    写一段描述,有助于人们搜索包,它会在npm官网搜索中列出

    keywords

    关键词字符数组,有助于人们搜索包

    homepage

    项目主页的url

    示例:

    "homepage": "https://github.com/owner/project#readme"
    

    bugs

    项目问题issues的url和电子邮件的地址

    示例:

    { 
      "url" : "https://github.com/owner/project/issues", 
      "email" : "project@hostname.com"
    }
    

    license

    通用许可,说白了就是告诉大家这个包是否开源

    { "license" : "MIT" }
    

    author

    下面示例包含Barney Rubble作者名称,email,(http://barnyrubble.tumblr.com/)url,三个部分组成,
    其中email和url是可选的

    { 
      "author": "Barney Rubble  (http://barnyrubble.tumblr.com/)" 
    }
    

    funding

    字符串URL,对象,数组都可以,主要放一些帮助写项目的信息,比如捐助的url

    { 
      "funding": { 
        type" : "individual", 
        "url" : "http://example.com/donate" 
      }, 
      "funding": { 
        "type" : "patreon",
        "url" : "https://www.patreon.com/my-account" 
      }, 
      "funding": "http://example.com/donate", 
      "funding": [ 
      { 
        "type" : "individual", 
        "url" : "http://example.com/donate" 
      }, 
      "http://example.com/donateAlso", 
      { 
        "type" : "patreon", 
        "url" : "https://www.patreon.com/my-account" 
      }] 
    }
    

    files

    可选的字段,描述包作为依赖项安装时要包含的项,不写这个字段默认包含所有文件

    无论怎么设置,都是包含以下的文件

    • package.json
    • README
    • LICENSE / LICENCE
    • mian字段中的文件

    总是被忽略

    • .git
    • CVS
    • .svn
    • .hg
    • .lock-wscript
    • .wafpickle-N
    • .*.swp
    • .DS_Store
    • ._*
    • npm-debug.log
    • .npmrc
    • node_modules
    • config.gypi
    • *.orig
    • package-lock.json

    main

    程序的入口,如果包名字为foo,执行require('foo'),执行主入口的exports对象

    对于大多数模块,最合理的做法只有一个主入口,未设置main,默认为包跟文件夹中的index.js

    browser

    如果您的模块打算在客户端使用,则应该使用浏览器字段而不是主字段。这有助于提示用户它可能依赖于Node.js模块中不可用的原语。(如窗口)

    bin

    一般做脚手架会用到

    create-vue举例子

     "bin": {
        "create-vue": "outfile.cjs"
      }
    

    npm create vue做了什么

    其实npm create就是npm init的别名, 执行的npm init vue,找到vue命令,找到对应软链接
    执行outfile.cjs

    man

    没看懂什么意思,找到其他文章看说是Linux 中的帮助指令(使用情景较少)

    directories

    同样没看懂 定义项目目录结构的字段(使用情景较少)

    repository

    项目代码仓库地址

    scripts

    脚本入口

    config

    config: {
      "aaa": "bbb"
    }
    

    在脚本中可以通过process.env.npm_package_config_aaa获取

    dependencies

    生产环境的依赖包

    devDependencies

    开发环境的依赖包

    peerDependencies

    减少包体积用,直接用电脑的依赖包,版本需要和声明的依赖版本一致

    peerDependenciesMeta

    用户电脑没有安装peer声明的依赖包,npm不会报错

    {
      "peerDependenciesMeta": {
        "vue": {
          "optional": true
        }
      }
    }
    

    bundleDependencies

    使用场景少

    optionalDependencies

    使用场景少

    overrides

    覆盖依赖

    {
      "overrides": {
        "vue": "^3.3"
      }
    }
    

    engines

    node或者npm版本要求

    {
      "engines": {
        "node": "v>=16.0.0 6.9.0"
      }
    }
    

    os

    指定操作系统

    支持

    "os": [
      "darwin",
      "linux"
    ]
    

    禁用

    "os": ["!win32"]
    

    cpu

    同上,指定cpu

    privite

    设置true,发不了npm,要设为false

    publishConfig

    指定包发布的注册表 URL,指定所有用户都可以访问

      "publishConfig": {
        "registry": "https://registry.npmjs.org/",
        "access": "public"
      }
    

    workspaces

    monorepo

    子包会软链接到跟目录node_modules

    {
      "workspaces": "packages/*"
    }
    

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论