package.json配置详解

package.json文件

执行 npm init 命令,会在当前目录生成一个 package.json 文件

这个文档是你需要知道的关于你的 package.json 文件中需要什么的所有信息。它必须是实际的 JSON,而不仅仅是一个 JavaScript 对象文字。

//package.json
{
  //如果你打算发布你的包,在你的package.json中最重要的事情是名称和版本字段,因为它们是必需的。名称和版本一起构成了一个标识符,该标识符被认为是完全唯一的。对软件包的更改应与对版本的更改一起沿着。
  // 如果您不打算发布您的软件包,则名称和版本字段是可选的。
  "name": "axios",
  "version": "1.7.2",
  // 在里面加上描述。这是一个字符串。这有助于人们发现您的软件包,因为它在npm search中列出。
  "description": "Promise based HTTP client for the browser and node.js",
    // 把关键字放进去。这是一个字符串数组。这有助于人们发现您的软件包,因为它在npm search中列出。
  "keywords": [
    "xhr",
    "http",
    "ajax",
    "promise",
    "node"
  ],
  // 项目主页的URL。
  "homepage": "https://axios-http.com",
  // 您的项目问题跟踪器的URL和/或应向其报告问题的电子邮件地址。这些对遇到您的软件包问题的人很有帮助。
  "bugs": {
    "url": "https://github.com/axios/axios/issues",
    "email": "project@hostname.com"
  },
  // 你应该为你的软件包指定一个许可证,这样人们就知道他们可以如何使用它,以及你对它的任何限制。
   "license": "MIT",
  //  "license": "BSD-3-Clause"
  //  "license": "(ISC OR GPL-3.0)"
  //  "license": "SEE LICENSE IN <filename>"
  // 人员字段,email和url都是可选的。
  "name": "Barney Rubble",
  "email": "b@rubble.com",
  "url": "http://barnyrubble.tumblr.com/",
  //  "author": "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
  // 资金
  "funding": {
    "type": "individual",
    "url": "http://example.com/donate"
  },
  // main字段是一个模块ID,它是程序的主要入口点。如果未设置main,则默认为包根文件夹中的index.js。
  "main": "index.js",
  // 如果你的模块是要在客户端使用的,那么应该使用浏览器字段而不是主字段。这有助于提示用户它可能依赖于Node.js模块中不可用的原语。
  // browser 字段提供对浏览器环境更友好的模块入口。
  "browser": {
    "./lib/adapters/http.js": "./lib/helpers/null.js",
    "./lib/platform/node/index.js": "./lib/platform/browser/index.js",
    "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js"
  },
//   很多软件包都有一个或多个可执行文件,他们想安装到PATH中。npm使这变得非常容易(事实上,它使用此功能来安装“npm”可执行文件。)
// 要使用这个,请在package.json中提供一个bin字段,它是命令名到本地文件名的映射。当这个软件包被全局安装时,该文件将被链接到全局bins目录中,或者将创建一个cmd(Windows命令文件)来执行bin字段中的指定文件,因此它可以由name或name.cmd(在Windows PowerShell上)运行。当这个包作为一个依赖项安装在另一个包中时,这个文件将被链接到这个包中,它可以直接通过npm exec或通过其他脚本中的名称在通过npm run-script调用它们时使用。
  "bin": {
    "myapp": "bin/cli.js",
    "axios": "bin/api.js"
  },
  // 指定代码所在的位置。这对那些想做贡献的人很有帮助。如果git repo在GitHub上,那么npm repo命令就可以找到你。
  "repository": {
    "type": "git",
    "url": "https://github.com/axios/axios.git"
  },
  // 脚本
  "scripts": {
    "start": "node ./sandbox/server.js",
    "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m",
    "examples": "node ./examples/server.js",
  },
  // “config”对象可用于设置在升级过程中持续存在的包脚本中使用的配置参数。
  "config": {
    "port": "8080",

  },
  // 依赖
  // dependencies字段中声明的是项目的生产环境中所必须的依赖包。当使用 npm 或 yarn 安装npm包时,该npm包会被自动插入到此配置项中
  "dependencies": {
    "foo": "1.0.0 - 2.9999.9999",
    "bar": ">=1.0.2 <2.1.2",
    "baz": ">1.0.2 <=2.3.4",
    "boo": "2.0.1",//完全等于
    "qux": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
    "asd": "http://asdf.com/asdf.tar.gz",
    "elf": "~1.2.3",//相似版本
    "two": "2.x",//
    "lat": "latest",
    "antd": "^5.12.8",
    "antd-img-crop": "^4.12.2",
    "antd-style": "^3.6.1",
    // 本地路径
    "bar": "file:../foo/bar",
    // 本地路径 直接链接到项目下的ckeditor5目录
    "ckeditor5-custom-build": "file:./ckeditor5",
  },
  // devDependencies中声明的是开发阶段需要的依赖包,如Webpack、Eslint、Babel等,用于辅助开发。它们不同于 dependencies,因为它们只需安装在开发设备上,而无需在生产环境中运行代码。当打包上线时并不需要这些包,所以可以把这些依赖添加到 devDependencies 中,这些依赖依然会在本地指定 npm install 时被安装和管理,但是不会被安装到生产环境中。
  "devDependencies": {

  },
  // 在某些情况下,你想表达你的包与宿主工具或库的兼容性,而不一定要做这个宿主的require。这通常被称为插件。
//   有些情况下,我们的项目和所依赖的模块,都会同时依赖另一个模块,但是所依赖的版本不一样。比如,我们的项目依赖A模块和B模块的1.0版,而A模块本身又依赖B模块的2.0版。大多数情况下,这不是问题,B模块的两个版本可以并存,同时运行。但是,有一种情况,会出现问题,就是这种依赖关系将暴露给用户。
// 最典型的场景就是插件,比如A模块是B模块的插件。用户安装的B模块是1.0版本,但是A插件只能和2.0版本的B模块一起使用。这时,用户要是将1.0版本的B的实例传给A,就会出现问题。因此,需要一种机制,在模板安装的时候提醒用户,如果A和B一起安装,那么B必须是2.0模块。
// peerDependencies字段就是用来供插件指定其所需要的主工具的版本。
// npm3.0版本开始 不会默认安装了
  "peerDependencies": {
    "tea": "2.x"
  },

// bundledDependencies配置项是一个数组,数组里可以指定一些模块,这些模块将在这个包发布时被一起打包。
// 需要注意,这个字段数组中的值必须是在dependencies, devDependencies两个里面声明过的包才行
  "bundledDependencies":[],
  //   如果需要在找不到包或者安装包失败时,npm仍然能够继续运行,则可以将该包放在optionalDependencies对象中,optionalDependencies对象中的包会覆盖dependencies中同名的包,所以只需在一个地方进行设置即可。
// 需要注意,由于optionalDependencies中的依赖可能并为安装成功,所以一定要做异常处理,否则当获取这个依赖时,如果获取不到就会报错。
  "optionalDependencies":{

  },
  // 引擎
  // 当我们维护一些旧项目时,可能对npm包的版本或者Node版本有特殊要求,如果不满足条件就可能无法将项目跑起来。为了让项目开箱即用,可以在engines字段中说明具体的版本号
  // 需要注意,engines只是起一个说明的作用,即使用户安装的版本不符合要求,也不影响依赖包的安装
  "engines": {
    "node": ">=0.10.3 <15",
    "npm": "~1.0.20"
  },
  // 操作系统
  "os": ["darwin", "linux","!win32"],
  //
  "cpu": ["x64", "ia32","!arm", "!mips"],
  // 如果你在package.json中设置了"private": true,那么npm将拒绝发布它。
  "private": true,
  "module": "",
  "types": "",
  "type": "module",//支持使用es module
}

详细字段描述:https://docs.npmjs.com/cli/v10/configuring-npm/package-json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754481.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

命令行中关于windows hash md5 , mac hash md5 , linux hash md5 文件校验方式

md5&#xff0c; sha-1 &#xff0c;sha256. windows certutil -hashfile filename md5certutil -hashfile filename sha1certutil -hashfile filename sha256macos 平台 md5 filenameshasum -a 1 filenameshasum -a 256 filenamelinux 平台 md5sum filenameshasum -a 1 fil…

Windows平台使用S3Browser连接兼容的对象存储

本文记录了在Windows平台使用S3Browser连接兼容的对象存储的过程 一、安装S3Browser 1、下载 S3Browser官网&#xff1a;https://s3browser.com/ 直接下载&#xff1a;https://s3browser.com/download/s3browser-11-6-7.exe 2、安装 3、同意授权后确定安装目录 4、勾选立即…

VsCode:配置TypeScript开发环境

一、前提 电脑已经安装了npm 何如安装npm&#xff0c;请点击查看Node.js、npm常用命令、安装多个node版本 提醒&#xff1a;下文讲解操作是在mac 系统进行的&#xff0c;TypeScript简称&#xff1a;ts 二、安装TypeScript 在终端里执行命令&#xff1a;npm install -g typescr…

uni-appx使用form表单页面初始化报错

因为UniFormSubmitEvent的类型时 e-->detail-->value,然后没有了具体值。所以页面初始化的时候 不能直接从value取值&#xff0c;会报错找不到 所以form表单里的数据我们要设置成一个对象来存放 这个问题的关键在于第22行代码 取值&#xff1a; 不能按照点的方式取值 …

【CT】LeetCode手撕—300. 最长递增子序列

目录 题目1- 思路2- 实现⭐300. 最长递增子序列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;300. 最长递增子序列 1- 思路 模式识别&#xff1a;最长递增子序列——> 利用动规五部曲 解决 ——> 借助 i 和 j 指针&#xff0c;其中 j < i 动规五部曲 1.定义…

Ubuntu安装、更新和删除软件

Ubuntu安装、更新和删除软件 问题命令行直接安装、更新和删除软件命令行直接安装软件命令行直接更新软件命令行直接删除软件 手动下载后命令行安装、更新和删除软件手动下载后命令行安装软件手动下载后命令行更新软件手动下载后命令行删除软件 手动下载后在桌面环境下安装、更新…

grpc学习golang版( 八、双向流示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

压缩pdf在线工具,压缩pdf大小的软件

如何有效地压缩PDF文件大小却是个问题&#xff0c;为了获得最佳的压缩效果&#xff0c;我们必须依赖专业的压缩工具&#xff0c;采用错误的方法可能会对文件内容产生负面影响&#xff0c;甚至导致文件无法打开&#xff0c;今天&#xff0c;我将分享一些独特的压缩技巧&#xff…

【语言模型】深入探索语言模型中的神经网络算法:原理、特点与应用

随着人工智能技术的飞速发展&#xff0c;神经网络算法在语言模型中的应用日益广泛&#xff0c;为自然语言处理领域带来了革命性的变革。本文将深入探讨当前语言模型中常用的几种神经网络算法&#xff0c;包括全连接神经网络、卷积神经网络、循环神经网络、长短期记忆网络、门控…

ffmpeg使用png编码器把rgb24编码为png图像

version #define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MINOR 12 #define LIBAVUTIL_VERSION_MICRO 100 note 不使用AVOutputFormat code void CFfmpegOps::EncodeRGB24ToPNG(const char *infile, const char *width_str, const char *height_str, c…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识4——图形用户界面之通知列表和状态栏

一、前期准备 提示&#xff1a;下面所有学习内容都是基于以下条件完成的 条件1.已经正确安装并正常运行SPO 1400 CRAFT软件&#xff08;以下简称LCT&#xff09; 条件2.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备&#xff08;以下简称NE&#xff09; 具体登录…

嵌入式应用开发屏幕教程8080并口通信

目录 #8080相关概念介绍 #8080并行通信硬件连接部分 #并行通信硬件电路连接图 #并行通信读数据规定 #并行通信写数据规定 #8080相关概念介绍 通信协议分为串行通信协议&#xff0c;并行通信协议&#xff0c;而本章所讲的8080是一种并行通信协议&#xff0c;并行通信协议 Pa…

Git使用过程中涉及的几个区域

一. 简介 Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理从很小到非常大的项目版本管理&#xff0c;也是 Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。 本文简单了解一下 git涉及的几个部分&#xff0c;以及git 常…

老无忧,成熟人士都在玩的社交app

随着互联网向不同年龄群体的进一步渗透&#xff0c;越来越多大龄人士逐步在传统以年轻人为主的平台中搭建起自己的空间&#xff0c;对缔结社交关系的需求也变得强烈起来。老无忧无忧交友app应运而生&#xff0c;于2024年6月1日正式上线&#xff08;以下简称“老无忧”&#xff…

step6:改用单例模式

文章目录 文章介绍codemain.cppSerialPort.qmlSerialPortHandler.h 文章介绍 案例MF改为单例模式 参考之前写过的关于单例模式的文章单例模式1、单例模式2 code main.cpp qmlRegisterSingletonType(“com.example.serialport”, 1, 0, “SerialPortHandler”, SerialPortHan…

c++ 设计模式 的课本范例(上)

( 0 ) 这里补充面向对象设计的几个原则&#xff1a; 开闭原则 OCP &#xff1a; 面向增补开放&#xff0c;面向代码修改关闭。其实反映到代码设计上就是类的继承&#xff0c;通过继承与多态&#xff0c;可以不修改原代码&#xff0c;又增加新的类似的功能。 依赖倒置原则 Depen…

JavaSE:多态

向上转型&#xff1a; 先看一段代码&#xff1a; 为何Animal animalnew Dog这个代码不报错。就是因为使用了向上转型&#xff1a;父类引用引用子类对象 向上转型一共有三种方式可以实现向上转型&#xff1a;1.直接赋值&#xff0c;2.通过传参&#xff0c;3.返回值 1.直接赋值…

virtualbox安装win10

等到安装完成 设备下选择安装增强功能

【教程】几种不同的RBF神经网络

本站原创文章&#xff0c;转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…

Redis 5 种基础数据结构?

Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)在面试中经常会被问到&#xff0c;这篇文章我们一起来回顾温习一下。 还有几种比较特殊的数据结构(HyperLogLogs、Bitmap 、Geospatial、Stream)也非常重要&#xff0c;我们后面下次再聊&#xff01; 下面是正文。…