首页 > 其他分享 >package.json配置指南

package.json配置指南

时间:2024-12-03 16:29:23浏览次数:9  
标签:指南 npm git 文件 URL package json 依赖 版本

基础信息

name

包的名称是package.json中最重要的字段之一,必须唯一且不能包含非URL安全字符。建议不要在名字中包含nodejs,因为默认假定它是一个JavaScript模块。这个名字会作为URL的一部分、命令行参数或文件夹名称。

注意:

  • 在你爱上你的名字之前,你可能需要去NPM Registry检查一下这个名字是否已经被使用了。

version

版本号,必须遵循semver规范,确保每次修改包时都更新版本号。nameversion共同组成一个唯一的标识符。

description

简短描述,有助于用户通过npm search发现你的包。

keywords

关键词数组,帮助用户更容易找到你的包。

homepage

项目主页链接,区别于url字段。注意:如果使用url字段,可能会被误认为是重定向地址。

bugs

提交问题的URL或邮箱地址,这对于遇到问题的开发者非常有帮助。

license

指定许可证,可以是标准许可证名称(如"MIT")或包含类型和URL的对象。提供许可证文件也是个好主意。

people fields: author, contributors

  • author: 包作者信息,支持对象或字符串格式。
  • contributors: 贡献者列表,每个贡献者的信息与author相同。

文件相关

files

发布包时应包括的文件列表。也可以使用.npmignore来排除某些文件。此字段定义了哪些文件会被包含进打包后的tarball中。

main

模块入口文件路径,相对根目录。当用户调用require('your-package')时,返回的就是这个文件导出的内容。

bin

可执行文件映射,用于添加命令到PATH中。如果只有一个可执行文件且其名称与包名相同,可以直接指定文件路径。

man

手册页文件路径,可以是单个文件或数组。如果文件名不是以包名开头,则会自动加上前缀。

directories

指定包内特定类型的文件夹位置,如lib, doc, man等。这些信息目前主要用于元数据。

CommonJS Packages 规范说明
  • directories.lib: 指向库文件夹的位置。
  • directories.bin: 如果指定了“bin”目录,该文件夹中的所有文件都会被当作bin字段使用。
  • directories.man: 放满man页面的文件夹,自动生成一个man数组。
  • directories.doc: 存放Markdown文档的地方。
  • directories.example: 存放示例脚本的地方。

版本控制与脚本

repository

指向代码仓库的URL,便于贡献者参与开发。URL应该是公开的、直接由版本控制系统处理的链接。

scripts

定义了生命周期事件对应的命令,例如安装、构建、测试等。参见npm-scripts(7)

生命周期事件
  • preinstall: 在安装之前运行。
  • install: 安装过程中运行。
  • postinstall: 安装完成之后运行。
  • prepublish: 发布之前运行。
  • prepare: 在prepublishprepublishOnly之后,在npm publish前运行。
  • prepublishOnly: 类似prepublish,但仅在npm publish时触发。
  • start: 启动服务。
  • test: 运行测试。
  • stop: 停止服务。
  • restart: 重启服务。

依赖关系

dependencies

生产环境中必需的依赖及其版本范围。请勿将测试或临时依赖放在dependencies中,而应该放入devDependencies。详见semver(7)

devDependencies

开发环境所需的额外工具或库。它们会在根目录执行npm linknpm install时初始化,并可以像其他npm配置参数一样管理。

peerDependencies

声明插件与其宿主之间的兼容性需求,通常用于引用宿主工具或库。这能保证你的包只能与特定版本的宿主一起初始化。

optionalDependencies

可选安装的依赖,允许安装失败而不影响整体初始化。需要注意的是,程序需要能够适当地处理缺失的依赖。

bundledDependencies

发布时捆绑在一起的依赖,也接受拼写为bundleDependencies

依赖URL

可以指定一个tarball URL,这个tarball将在包被初始化的时候下载并初始化。

依赖Git URL

Git URLs 可以是以下几种形式:

  • git://github.com/user/project.git#commit-ish
  • git+ssh://user@hostname:project.git#commit-ish
  • git+ssh://user@hostname/project.git#commit-ish
  • git+http://user@hostname/project/blah.git#commit-ish
  • git+https://user@hostname/project/blah.git#commit-ish

commit-ish是可以被git checkout的任何tag、sha或者branch。默认为master。

GitHub URLs

从1.1.65版后,你可以仅仅用“user/foo-project”引用GitHub urls。

{
  "dependencies": {
    "express": "visionmedia/express"
  }
}

运行环境

engines

指定Node.js和npm版本要求,确保包能在正确的环境中运行。

engineStrict

强制执行engines字段中的版本限制,除非你非常确定,否则不推荐使用。

os

允许运行的操作系统列表,可以通过黑名单形式(前置!)禁止某些操作系统。

cpu

支持的CPU架构,同样支持黑名单形式(前置!)。

发布设置

preferGlobal

推荐全局安装的标志,若设为true,则提醒用户最好全局安装该包。

private

防止意外发布私有库,设为true则npm不会发布此包。

publishConfig

发布时使用的特殊配置选项,比如指定标签或注册表地址。任何配置都可以被重写,但通常只有tagregistry与发布的意图有关。

默认值

npm会根据包的内容自动设置某些默认值:

  • 如果存在server.js,则为start命令设置默认值。
  • 若根目录下有wscriptbinding.gyp,则为preinstall命令提供编译指令。
  • AUTHORS文件解析contributors

高级特性与最佳实践

使用.npmrc文件

可以在项目的根目录创建一个.npmrc文件来覆盖全局配置,适用于团队内部或不同项目间共享配置。

定义config字段

config hash可以用来配置用于包脚本中的跨版本参数。例如,如果一个包有下面的配置:

{
  "name": "foo",
  "config": {
    "port": "8080"
  }
}

然后有一个“start”命令引用了npm_package_config_port环境变量,用户可以通过npm config set foo:port 8001来重写它。

使用peerDependencies进行插件开发

当你开发一个插件时,使用peerDependencies来声明对宿主包的依赖,确保插件只与特定版本的宿主一起工作。

管理依赖版本

尽量使用宽松的版本范围,避免锁定到具体版本,以便更好地适应上游的变化。同时,考虑使用resolutions字段来固定某些依赖的具体版本,以减少潜在的兼容性问题。

标签:指南,npm,git,文件,URL,package,json,依赖,版本
From: https://blog.csdn.net/weixin_43830624/article/details/144217369

相关文章

  • 2024最全CTF入门指南、CTF夺旗赛及刷题网站(建议收藏!)
    前言CTF(CaptureTheFlag)中文译作:夺旗赛CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON......
  • 什么是项目管理制度?完整指南带你了解其重要性
    项目管理制度是组织内部为确保项目顺利实施和成功交付而制定的一系列规则、流程和标准。它不仅涵盖了项目从启动到结束的各个阶段,还包括了资源分配、风险管理、质量控制和沟通协调等多个方面。一个健全的项目管理制度能够为项目团队提供明确的指导和框架,确保项目在时间、成本和质......
  • Sigrity Power DC Single-BoardPackage ET Co-Simulation模式进行单板电热协同仿真分
    SigrityPowerDCSingle-BoardPackageETCo-Simulation模式进行单板电热协同仿真分析操作指导SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式进行单板压降仿真分析操作指导详细介绍了单板的压降仿真分析流程,下面同样以这个例子进行电热协同仿真分析具体操作......
  • Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行封装基板压降仿真分
    SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式进行封装基板压降仿真分析操作指导SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式不仅可以用于PCB压降仿真分析,同样也可以用于封装基板的压降仿真分析,以下图为例进行说明具体操作如下双击打开Powe......
  • 《Hive编程指南》读书笔记
    作者:CHO体系马壮前言:最近刚接触写HiveSQL,却发现许多查询的执行速度远不如预期。为了提升查询效率,我去阅读了《Hive编程指南》,希望通过理解其底层机制来找到优化的方式,并为未来能编写出高效的SQL奠定基础。谨以此文做个记录。一、Hive因何而生先有Hadoop再有HiveHadoop实现......
  • 夜莺运维指南之基本部署
    对于一套监控系统而言,核心就是采集数据并存储,然后做告警判定、数据展示分析,整个流程图如下:1.夜莺服务端前置说明:各种环境的选型建议Dockercompose方式:可用于快速测试,不建议上生产,如果要生产环境使用Dockercompose,需要对Dockercompose真的很熟二进制部署:这是......
  • 指南:如何优雅地写代码
    0xFF前言Talkischeap.Showmethecode.无论是程序员还是OIer,写代码都尤为重要。然而,有些人的代码使人舒适,有些人的代码使人难受。笔者认为其中的原因,主要是“优雅”与否。本文总结了一点关于如何让代码更优雅的建议,供大家参考。0x00控制行数控制行数?压行呗。秒了!#i......
  • 洛谷题单指南-线段树-P4513 小白逛公园
    原题链接:https://www.luogu.com.cn/problem/P4513题意解读:给定序列a[n],支持两种操作:1.查询区间[l,r]内的最大子段和2.将a[x]修改成s,输出其中每一个查询操作的结果。解题思路:区间问题依然想到线段树,问题主要在于线段树的节点要维护哪些信息:最直接的,肯定要维护节点所表示区间的......
  • Web 安全必读:跨站脚本攻击 (XSS) 原理与防御指南
    文章目录原理解析:触发方式文件内容中的xss文件名中的xssHTTP请求中的xss其他分类:根据攻击脚本存储的方式根据脚本是否通过服务器处理根据持久性常见的js触发标签无过滤情况有过滤情况xss-labs通关level1-level10level11-level20XSS(Cross-SiteScripting,跨站脚本......
  • 华为技术专家出品,《华为开发者空间案例指南》带你玩转云上20+场景应用开发
    随时随地都能开启开发之旅,这是一种怎样奇妙的体验? 想象一下,无需安装繁琐的IDE,也不用搭建复杂的开发环境,只需开机,就能迅速投入项目开发。 在华为开发者空间,你可以基于免费领取的云主机,轻松探索各种技术可能。比如进行AI风格的编程、打造电商平台秒杀抢购功能、为网站添加AI......