React package.json配置参数详解

2023-10-31

package.json文件想必大家都不陌生,一般的项目根目录下都会有这个文件,文件中定义了项目所需要的各个模块,以及这个项目的配置信息,例如名称、版本、许可证等。通过执行npm install命令,可以自动下载项目所需要的模块,也就是配置项目所需的运行环境和开发环境。

package.json 配置参数很多,大部分并不是必须的,一般都是name、version、main、author、dependencies、devDependencies这几个参数。

一、必须属性

1、name

"name": "Hello World",

name是一个必须字段,这个字段可能会在require()方法中被调用,所以名字要尽可能短。

注意:不要在name中包含js、node等字眼,这个名字最终会是url一部分、命令行的参数、目录名,所以不能以下划线或者其他符号开头。

2、 version

version 字段表示该项目包的版本号,它是一个字符串。

版本号的命名遵循语义化版本 2.0.0 规范,格式为:「主版本号. 次版本号. 修订号」,通常情况下,修改主版本号是做了大的功能性的改动,修改次版本号是新增了新功能,修改修订号就是修复了一些 bug。

二、描述属性

1、description

description 字段用来描述这个项目包,它是一个字符串,可以让其他开发者在 npm 的搜索中发现我们的项目包。

2、author

author 顾名思义就是作者,表示该项目包的作者。它有两种形式,一种是字符串格式:

"author": "CUGGZ <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)"

另一种是对象形式:

"author": {
  "name" : "CUGGZ",
  "email" : "xxxxx@xx.com",
  "url" : "https://juejin.cn/user/3544481220801815"
}

3、repository

repository 表示代码的存放仓库地址,通常有两种书写形式。第一种是字符串形式:

"repository": "https://github.com/facebook/react.git"

除此之外,还可以显式地设置版本控制系统,这时就是对象的形式:

"repository": {
  "type": "git",
  "url": "https://github.com/facebook/react.git"
}

4、bugs

bugs 表示项目提交问题的地址,该字段是一个对象,可以添加一个提交问题的地址和反馈的邮箱:

"bugs": { 
  "url" : "https://github.com/facebook/react/issues",
  "email" : "xxxxx@xx.com"
}

三、依赖配置

1、dependencies,devDependencies

dependencies字段指定了项目运行所依赖的模块,devDependencies指定项目开发所需要的模块。

它们都指向一个对象,该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。

{
  "dependencies": { //在生产环境中需要用到的依赖
    "antd": "^3.23.6",
    "babel-plugin-import": "^1.12.2", // 项目依赖的包名以及相关的版本信息
    "customize-cra": "^0.8.0",
    "less": "^3.10.3",
    "less-loader": "^5.0.0",
    "react": "^16.8.2",
    "react-app-rewired": "^2.1.3",
    "react-dom": "^16.8.2",
    "react-picker": "^1.2.15",
    "react-redux": "^6.0.0",
    "react-scripts": "2.1.5",
    "redux": "^4.0.1",
    "redux-thunk": "^2.3.0"
  },
  "devDependencies": { //在开发、测试环境中用到的依赖
    "node-sass": "^4.11.0",
    "react-router-dom": "^4.3.1"
  }
}

在添加项目依赖的时候:

npm install react --save 表示模块写入的是dependencies属性
npm install react --save-dev 表示模块写入的是devDependencies属性

对应版本的指定,可以分为以下几种:

  • 指定版本:例如5.1.1,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
  • ~指定版本:例如 ~5.0.1,表示安装5.0.x的最新版本(不低于5.0.1),但是不安装5.1.x,也就是说安装时不改变大版本号和次要版本号。
  • ˆ指定版本:例如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。
  • latest:安装最新版本。

2、peerDependencies

用来供插件指定其所需要的主工具的版本。

{
  "name": "chai-as-promised",
  "peerDependencies": {
    "chai": "1.x"
  }
}

上面代码指定,安装chai-as-promised模块时,主程序chai必须一起安装,而且chai的版本必须是1.x。如果你的项目指定的依赖是chai的2.0版本,就会报错。

注意,从npm 3.0版开始,peerDependencies不再会默认安装了。

四、脚本配置

1、scripts

scripts指定了运行npm的命令行缩写,下面的设置指定了npm run preinstall、npm run postinstall、npm run start、npm run test时,所要执行的命令:

"scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
}

2、config

config 字段用来配置 scripts 运行时的配置参数,如下所示:

"config": {
  "port": 3000
}

如果运行 npm run start,则 port 字段会映射到npm_package_config_port环境变量中:

console.log(process.env.npm_package_config_port) // 3000

用户可以通过npm config set foo:port 3001 命令来重写 port 的值。

五、文件&目录

1、 main

main 字段用来指定加载的入口文件,在 browser 和 Node 环境中都可以使用。如果我们将项目发布为 npm 包,那么当使用 require 导入 npm 包时,返回的就是 main 字段所列出的文件的 module.exports 属性。如果不指定该字段,默认是项目根目录下的 index.js。如果没找到,就会报错。

该字段的值是一个字符串:

"main": "./src/index.js"

2、bin

bin项用来指定各个内部命令对应的可执行文件的位置。

"bin": {
  "someTool": "./bin/someTool.js"
}

上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js。Npm会寻找这个文件,在node_modules/.bin/目录下建立符号链接。

3、browser

browser指定该模板供浏览器使用的版本。Browserify这样的浏览器打包工具,通过它就知道该打包那个文件。

"browser": {
  "tipso": "./node_modules/tipso/src/tipso.js"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React package.json配置参数详解 的相关文章

随机推荐

  • layui的自定义page

    一 前端页面使用laypage div align center style margin top 20px div let totalCount 0 getPageData 1 6 function getPageData page li
  • DAY34:贪心算法(一)贪心算法理论基础

    文章目录 什么是贪心算法 贪心算法的两个极端 真正需要数学推导的情况 类似环形链表 贪心的套路 课程链接 贪心算法理论基础 哔哩哔哩 bilibili 什么是贪心算法 贪心算法的本质就是找到每个阶段的局部最优 从而去推导全局最优 例如一堆不
  • 常用adb命令整理

    一 adb介绍 adb Android Debug Bridge Android 调试桥的缩写 adb 是一个 C S 架构的命令行工具 主要由 3 部分组成 运行在 PC 端的 Client 可以通过它对 Android 应用进行安装 卸
  • Spring Boot项目中的静态资源位置详解

    一 默认提供的静态资源位置 在使用IntelliJ IDEA中的Spring Boot初始化工具创建的Spring Boot项目中 默认存在resources static目录用于存放静态资源 而在Spring Boot项目中 默认一共有5
  • 如何使用Java进行集成测试?

    在Java中进行集成测试有很多种方法 以下介绍一种比较常见的基于JUnit框架的集成测试方法 确定需要测试的代码 首先需要确定需要进行集成测试的代码 可以是整个应用程序 也可以是特定的模块或者方法 配置测试环境 在测试环境中创建测试数据库
  • CSS实现全局的自适应

    放置全屏地图时遇到的问题 解决方案如下 方法一 css view plain copy map height 100 width 100 position absolute top 0px bottom 0px background 00F
  • war包发布tomcat出错

    tomcat 错误 严重 Error listenerStart 网上说有很多种可能的原因 我的是因为缺少了spring core jar 但我的pom xml里确实是有的 而且在eclipse里是可以跑的程序 打成war后这个包就没了 原
  • Ethereum学习之路 —— 状态树

    状态树 要设计一种什么数据结构呢 要完成账户地址到账户状态的映射 以太坊的账户地址是160位的 也就是20个字节 一般表示成40个16进制的数 状态时指外部账户和合约账户的balance nonce等 MPT 了解MPT之前 先了解下tri
  • 如何从About:Config中列出,过滤,添加,删除更改Firefox设置

    Firefox provides settings and configuration windows in a user friendly way But as a browser it provides a lot of configu
  • Github怎么上传到代码到仓库

    Github是一个非常受欢迎的代码托管平台 使用Git作为版本控制系统 它允许开发者将自己的代码存储在远程仓库中 以便于团队协作 项目管理和版本控制 本教程将详细介绍如何将代码上传到Github仓库 准备工作 注册并登录Github账户 访
  • 双目立体视觉-特征检测与特征匹配总结

    特征检测 opencv可以检测图像的主要特征 然后提取这些特征 使其成为图像描述符 特征 特征就是有意义的图像区域 该区域具有独特性或易于识别性 角点与高密度区域是一个很好的特征 边缘可以将图像分为两个区域 因此可以看作很好的特征 斑点 与
  • STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收(二)

    MQTT自定义库函数的实际应用 前言 串口配置 初始化 printf输出重定向 串口中断函数 对串口接收到的数据进行处理 baseAck 获取MQTT主题内容get mqttval msg handle 总结 文章目录 STM32F103C
  • 一个正整数表示为n(n>=2)个连续正整数之和!

    今天下午无意中看到这个题目 题目描述 一个正整数有可能可以被表示为n n gt 2 个连续正整数之和 如 15 1 2 3 4 5 15 4 5 6 15 7 8 请编写程序 根据输入的任何一个正整数 找出符合这种要求的所有连续正整数序列
  • Python入门详细攻略(初学者一定要看的),一文讲清,赶紧收藏

    目前python可以说是一门非常火爆的编程语言 应用范围也非常的广泛 工资也挺高 未来发展也极好 Python究竟应该怎么学呢 我自己最初也是从零基础开始学习Python的 给大家分享Python的学习思路和方法 一味的买书看书 看视频 是
  • 前端炫酷特效合集

    我们经常在抖音上看到一些前端很酷的特效 诸如 快叫你学编程的朋友给你写一个圣诞树 看着是不是很酷炫呢 其实只要有源码 你也可以拥有哦 跟大家分享多款前端特效源码 需要的朋友可以去在这里资源站 源码 专栏进行预览下载 还可以在线演示哦 以后还
  • 运动控制的轴到底是什么

    先介绍几个名词 硬件资源 数字量输出资源 do 包括伺服使能数字量输出 伺服报警清除数字量输出 通用数字量输出 数字量输入资源 di 正限位数字量输入 负限位数字量输入 驱动报警数字量输入 原点 信号数字量输入 通用数字量输入 编码器计数资
  • 暑假超越计划练习题(2)

    笔者开头感想 现如今 暑假已经过大半部分 但是随着时间流逝 笔者的C语言仍没有多大的起色 日新月急 但是没有办法 思前想后 笔者决定对于之前所学的内容进行一下回顾复习 因此刷题是必须的 所以笔者将最近做过的习题 将会在此整理一遍 重新整理成
  • Json文件编辑功能

    1 Json格式 JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它基于 ECMAScript European Computer Manufacturers Association 欧洲计算机协
  • Yarn 的安装与使用

    Yarn 是一款 JavaScript 的包管理工具 npm 的代替方案 在 Yarn 的官网有着一句话 Safe stable reproducible projects 正如 Yarn 官网的介绍 Yarn 的具有速度快 安全 可靠 的
  • React package.json配置参数详解

    React package json配置参数详解 一 必须属性 二 描述属性 三 依赖配置 四 脚本配置 五 文件 目录 package json文件想必大家都不陌生 一般的项目根目录下都会有这个文件 文件中定义了项目所需要的各个模块 以及