当前位置: 首页 > article >正文

package.json 文件配置

创建 Node.js 的配置文件 package.json

npm init -y

package.json 文件配置说明

配置说明示例
name指定项目的名称,必须是小写字母,可以包含字母、数字、连字符(-)或下划线(_),不能有特殊字符,除非是 scoped 包名使用@符号{
  "name": "my-project"
}
version

指定项目的版本号。它遵循 语义版本控制(SemVer) 规范,格式为 MAJOR.MINOR.PATCH,每个部分都是数字。

稳定版本:"version": "1.0.0"
先行版本:"version": "1.0.0-beta"
构建版本:"version": "1.0.0+build1234"
先行版本和构建版本:"version": "1.0.0-beta+build1234"

{
  "version": "1.2.3"
}
description简要描述项目或包的功能和目的。{
  "description": ""
}
 
main用于指定项目的入口文件,通常是模块的主文件路径。如果没有显式指定 main,Node.js 会查找默认的文件 index.js。主要用于CommonJS的旧环境。{
  "main": "index.js"            // 指向根目录的文件
  "main": "dist/main.mjs"        // 使用 ES 模块
  "main": "dist/index.ts"        // 使用 TypeScript 文件
}
module如果你的项目包含了同时支持 CommonJS 和 ES 模块格式的代码,module 字段通常用于指定适合 ESM 环境的入口{
  "main": "dist/index.js",
  "module": "dist/index.mjs"
}
exports 为不同的环境、路径和模块系统提供不同的模块导出。{
  "exports": {
    "import": "./esm/index.js",  // 用于支持 ES Modules 的环境
    "require": "./cjs/index.js", // 用于 CommonJS 环境
    ".": "./index.js"            // 默认导出
  }
}
imports是 exports 的配套功能(Node.js 16 和后续版本中引入),用于在 ESM 环境中提供特定模块路径的映射。通过 imports,你可以定义模块路径的别名、重定向以及其他解析规则。// 导入 my-lib/* 的代码都会被映射到 ./src/my-lib/* 下,而导入 utils/* 的代码会映射到 ./src/utils/*
{
  "imports": {
    "my-lib/*": "./src/my-lib/*",
    "utils/*": "./src/utils/*"
  }
}
import { feature } from 'my-lib/feature';
scripts用于自定义 npm 脚本。这些脚本可以通过 npm run <script-name> 来执行,允许你自动化常见任务,如构建、测试、发布等。{
  "scripts": {
    "start": "node server.js",
    "test": "mocha test/**/*.js"
  }
}
keywords用于指定一组关键字,这些关键字可以帮助其他开发者更容易地找到你的项目或包,尤其是在发布到 npm 等包管理平台时。{
  "keywords": [
    "utility",
    "javascript",
    "library",
    "tools"
  ]
}
author用于指定项目或包的作者。通常这个字段包含作者的名称、电子邮件和网址等信息,以便其他人能够联系到作者,或了解项目的维护者是谁。

{
  "author": "Tom"
}

{
  "author": "Tom <tom@example.com> (https://tom.com)"
}
{
  "author": {
    "name": "Tom",
    "email": "tom@example.com",
    "url": "http://tom.com"
  }
}

license用于指定项目的许可类型。它说明了项目的使用、复制、修改和分发的规则。常见的开源许可协议包括 MIT、Apache-2.0、GPL 等。{
  "license": ["MIT", "Apache-2.0"]
}
type

用于指定包的模块类型,它主要影响 Node.js 如何解析项目中的文件。

module:指示项目使用 ES 模块(支持 import/export)。

commonjs:指示项目使用 CommonJS 模块(支持 require/module.exports)。

默认是 commonjs,但可以通过 .mjs 和 .cjs 来混合使用这两种模块类型。

{
  "type": "module"
}
types用于 TypeScript 项目中,指示该项目的类型定义文件位置。(类型定义是一种帮助 TypeScript 理解 JavaScript 代码结构的机制)。{
  "types": "lib/index.d.ts"
}
typings同 types 相似,官方推荐使用types。{
  "typings": "lib/index.d.ts"
}
homepage指定包的主页或相关网站的 URL。这通常是指向项目的官方网站、文档、GitHub 仓库等信息的链接。{
  "homepage": "https://github.com/username/project-name"
}
bugs用于指定与包相关的错误报告和问题追踪的 URL。当你希望用户报告 bug 或提出问题时请使用此配置。{
  "bugs": {
    "url": "https://github.com/username/project-name/issues",
    "email": "bugs@example.com"
  }
}
man用于指定与包相关的手册页文件(man pages)的路径。当你的项目包含命令行工具或者实用程序,且希望在安装时自动安装手册页,请使用此配置{
  "man": [
    "man/my-command.1"
  ]
}
repository用于指定开源包的版本控制系统(如 Git)的仓库地址。这个字段提供了包的源码仓库位置用于让其他人访问源码,通常是 GitHub、GitLab 或其他托管平台上的仓库 URL。{
  "repository": {
    "type": "git",
    "url": "https://github.com/username/project-name.git"
  }
}
contributors用于指定参与项目的贡献者信息。这个字段可以包含一个或多个贡献者的姓名、电子邮件地址以及其他联系信息。它通常用于开源项目中,以便记录对项目做出贡献的开发者或其他成员。{
  "contributors": [
    "John Doe",
    "Jane Smith"
  ]
}
funding用于指定如何支持项目的资金来源,特别是对于开源项目。它可以包含一个 URL 或多个 URL,这些链接指向可以帮助资助项目的资源,比如赞助页面、捐款平台、支持者名单等。{
  "funding": "https://github.com/sponsors/username"
}
dependencies用于列出项目运行时(生产环境)所需的所依赖的其他包或模块。通常包括你在项目中引用的外部库和工具。它们会在执行 npm install 时被安装。// 远程npm仓库
{
  "dependencies": {
    "express": "^4.17.1",        
    "lodash": "^4.17.20"
  }
}
// GitHub 仓库 URL 作为依赖
{
  "dependencies": {
    "my-package": "https://github.com/username/my-package.git"
  }
}
// 本地项目路径作为依赖
{
  "dependencies": {
    "my-local-package": "file:./path/to/local-package"
  }
}
 
devDependencies用于列出项目开发过程中所需的依赖包。这些依赖仅在开发、测试和构建过程中使用,而在生产环境中并不需要。{
  "devDependencies": {
    "webpack": "^5.0.0",
    "babel-cli": "^6.0.0",
    "eslint": "^7.10.0"
  }
}
peerDependencies用于指定你开发的公共包与其他包的兼容性。告诉使用你包的开发者,这个包与哪些包的版本兼容。// 告诉使用你的包的开发者需要与 react 的版本 16.x.x 或 17.x.x 兼容。
{
  "peerDependencies": {
    "react": "^16.0.0 || ^17.0.0"
  }
}
optionalDependencies用于列出项目的可选依赖包。这些依赖是“可选的”,意味着如果安装这些包失败,npm 不会视其为错误,也不会阻止安装过程。optionalDependencies 常用于那些不是项目运行所必需的包,但如果安装成功,将为项目提供额外功能或增强功能。{
  "optionalDependencies": {
    "fsevents": "^2.1.3",
    "node-sass": "^4.14.1"
  }
}
bundleDependencies、bundledDependencies用于指定哪些依赖包应该与项目一起打包并包含在发布包中。它主要用于将某些依赖打包到项目的发布版中,以便在项目发布后,这些依赖仍然可用,即使安装者没有显式安装(dependencies )这些依赖。{
  "bundleDependencies": [
    "lodash",
    "moment"
  ]
}
dependenciesMeta相对较新的字段,作用于dependencies用于提供有关项目依赖的附加元数据,尤其是对特定依赖的配置和行为的定制化。该字段允许你为依赖包提供一些额外的属性或指示,以控制它们在安装过程中的某些行为。{
  "dependencies": {
    "lodash": "^4.17.21",
    "axios": "^0.21.1"
  },
  "dependenciesMeta": {
    "lodash": {
      "optional": true            // 设置为可选的依赖,即使安装失败也不会中断安装过程
    },
    "axios": {
      "optional": false            // 设置为必需的依赖,安装时必须成功。
    }
  }
}
peerDependenciesMeta同dependenciesMeta效果一样,作用于peerDependencies。{
  "peerDependencies": {
    "react": "^16.8.0"
  },
  "peerDependenciesMeta": {
    "react": {
      "optional": true
    }
  }
}
optionalDependenciesMeta同dependenciesMeta效果一样,作用于optionalDependencies。{
  "optionalDependencies": {
    "fsevents": "^2.1.3"
  },
  "optionalDependenciesMeta": {
    "fsevents": {
      "optional": true
    }
  }
}
engines用于指定你的项目所支持的 Node.js 版本或 npm 运行时环境的版本要求。{
  "engines": {
    "node": ">=14.0.0 <16.0.0",    // 项目只支持 Node.js 版本在 14.x.x 至 15.x.x 之间
    "npm": ">=6.0.0"            // 要求 npm 版本不能低于 6.0.0
  }
}
private

用来标记一个项目是否为私有项目。设置为 true 时,npm会将这个项目视为私有项目,并禁止将其发布到 npm 仓库中心上。这个选项通常用于库或工具开发,防止意外发布项目。

{
  "private": true
}
files用于控制哪些文件应该被包括在发布到 npm 仓库中心的包中,哪些文件应该被排除。files 是一个数组,每个元素都是一个字符串,表示要发布的文件或目录的路径。路径是相对于 package.json 文件的位置的。

// npm 只会发布 bin/、lib/ 目录和 README.md 文件,其他文件会被忽略

{
  "files": [
    "bin/",
    "lib/",
    "README.md"
  ]
}

.npmignore.npmignore 文件用于排除不需要的文件。和 files 的作用相反。如果你的 package.json 中有 files 字段,.npmignore 文件将不会生效
config用于存储项目相关的配置项的对象。它可以用来定义在 npm 脚本中访问的自定义配置参数。这些配置项不会影响项目的发布内容,而是帮助开发者在项目的构建或运行过程中传递和访问配置数据。{
  "name": "my-package",
  "version": "1.0.0",
  "config": {
    "apiUrl": "https://api.example.com",
    "port": 8080
  },
  "scripts": {
    "start": "node server.js",
    "build": "webpack --config webpack.config.js",
    "print-api-url": "echo $npm_package_config_apiUrl"    // linux 使用 $符号
    "print-api-url2": "echo %npm_package_config_apiUrl%"    // windows 使用 %%符号
  }
}
packnpm pack 命令通常用于创建一个项目的发布包,但并不将其上传到 npm 中心仓库,而是生成一个 tarball (.tgz)文件,你可以选择何时发布它。// 打包
npm pack
// 在本地测试包
npm install ./my-package-1.0.0.tgz
prepackprepack 是一个 npm 生命周期脚本,prepack 脚本在执行 npm pack、npm publish 时(同时),会被自动执行。prepack 代替了 prepublish 和 prepublishOnly。// 在发布前先编译
{
  "scripts": {
    "prepack": "tsc"
  }
}
postpackpostpack 是一个 npm 生命周期脚本,它会在 npm pack 命令执行后触发,通常用于在创建包的过程中执行一些后处理任务。postpack 在打包操作完成后触发,可以用来执行一些清理工作、记录日志、修改包内容或其他必要的操作。
prepare用于在运行 npm install 或 npm publish 时执行构建、编译、清理等操作。prepare 代替了 prepublish 和 prepublishOnly。{
  "scripts": {
    "prepare": "tsc"
  }
}
postpublishpostpublish 是一个 npm 生命周期脚本,它会在 npm publish 命令执行之后触发。{
  "scripts": {
    "postpublish": "echo '发布成功!'"
  }
}
publishConfig

帮助你控制 npm publish 发布过程中的细节,例如发布的目标注册表、发布的标签、或者发布时的其他元数据。

registry:如果你想将包发布到私有的 npm 注册表,而不是默认的公共 npm 注册表。

tag:在发布新版本时,tag 字段用于指定版本的标签。例如,npm publish --tag beta 将包发布为 beta 标签。

access: 用于指定包的可访问性。它控制谁可以安装该包,可以设置为 public(公开)或 restricted(私有)。

directory: 如果你希望指定某个子目录作为发布目录(而不是整个项目的根目录)。

{
  "name": "my-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://my-private-registry.com",
    "tag": "next",
    "access": "public"
  }
}
binarybinary 是一个非标准字段,它通常用于描述一个包包含的二进制文件或二进制依赖项的相关信息。这个字段可以帮助自动化工具或脚本识别和处理与包相关的二进制资源,特别是在发布或安装过程中。{
  "name": "example-package",
  "version": "1.0.0",
  "binary": {
    "module_name": "example-bin",
    "module_path": "./bin",
    "version": "1.0.0",
    "host": "https://example.com/binaries/"
  }
}
preinstall用于在 npm install 执行之前运行某些自定义脚本。// 安装依赖之前检查是否安装了某个全局工具(比如 typescript)
{
  "scripts": {
    "preinstall": "echo 'Running preinstall tasks...'; npm install -g typescript"
  }
}
postinstall用于在 npm install 执行之后运行某些自定义脚本。// 安装依赖时需要在完成安装后执行构建脚本
{
  "scripts": {
    "postinstall": "npm run build"
  }
}
pretest用于在 npm test 执行之前运行某些自定义脚本。{
  "scripts": {
    "pretest": "npm run build",
    "test": "jest"
  }
}
posttest用于在 npm test 执行之后运行某些自定义脚本。// 在测试完成后生成一个测试报告
{
  "scripts": {
    "test": "jest",
    "posttest": "npm run generate-report"
  }
}
preferGlobal用于指示包是否应当在全局环境下安装,而不是局部安装。适用于你要开发一个发布到 npm 仓库中心的工具包。{
  "preferGlobal": true
}
bin用于指定模块中可执行文件的路径。这个字段主要用于当你发布一个包,并希望它包含一些可执行命令时。它允许你指定在安装该模块时将可执行文件链接到 node_modules/.bin 中的路径。// 模块被安装后,就会把my-command变成一个命令,命令执行./bin/my-command.js文件中的内容
{
  "name": "my-package",
  "version": "1.0.0",
  "bin": {
    "my-command": "bin/my-command.js"
  }
}
// ./bin/my-command.js 文件中的内容:
#!/usr/bin/env node
console.log('This is my command!');
// 然后在项目根目录终端使用命令,把自己写的命令挂载到全局命令中
npm link
// 然后就可以使用 my-command 命令,执行 bin/my-command.js 文件中的内容
resolutions用于确保项目中的所有依赖使用特定版本的包,从而避免版本冲突或不兼容的依赖版本。Yarn 作为包管理器时。// 无论 package-a 和 package-b 依赖于 lodash 的哪个版本,resolutions 字段都强制要求项目中所有地方使用 lodash 版本 4.17.21。
{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": {
    "package-a": "^1.0.0",
    "package-b": "^1.0.0"
  },
  "resolutions": {
    "lodash": "4.17.21"
  }
}
overrides用于确保项目中的所有依赖使用特定版本的包,从而避免版本冲突或不兼容的依赖版本。npm 官方支持。// // 无论 package-a 和 package-b 依赖于 lodash 的哪个版本,overrides 字段都强制要求项目中所有地方使用 lodash 版本 4.17.21。
{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": {
    "package-a": "^1.0.0",
    "package-b": "^1.0.0"
  },
  "overrides": {
    "lodash": "4.17.21"
  }
}
os

指定该包或项目适用的操作系统。这个字段的目的是让某些包在特定的操作系统上才被安装或使用,从而避免在不兼容的环境中安装或运行不支持的代码。

darwin: 用于 macOS 系统。
linux: 用于 Linux 系统。
win32: 用于 Windows 系统

{
  "name": "my-package",
  "version": "1.0.0",
  "os": ["darwin", "linux"]
}
cpu

指定该包的支持 CPU 架构。这使得你可以限制包的安装和运行只在特定的 CPU 架构上,类似于 os 字段,它帮助控制包在哪些硬件环境下被安装和运行。

x64: 64 位的 x86 架构(常见的桌面计算机和服务器架构,如 Intel 和 AMD 处理器)。
arm: 基于 ARM 架构的 CPU,通常用于低功耗设备(如智能手机和某些嵌入式系统)。
arm64: 64 位的 ARM 架构,常见于现代的 ARM 服务器和移动设备(如 Apple M1 和一些 Android 设备)。
ia32: 32 位的 x86 架构,较老的计算机和设备可能使用这种架构。
mips、mips64: 另一种架构,主要用于某些嵌入式设备。

{
  "name": "my-package",
  "version": "1.0.0",
  "cpu": ["x64", "arm64"]
}
 
lockfileVersion

lockfileVersion 是一个用于标识 package-lock.json 文件格式版本的字段。帮助 npm 在处理 package-lock.json 时确保正确的版本解析,特别是在版本升级和跨版本兼容性方面。lockfileVersion 会随着 npm 的版本变化而变化,例如 1 是 npm 5.x 的格式,2 是 npm 7.x 的格式,3 是 npm 8.x 的格式。

{
  "name": "my-project",
  "version": "1.0.0",
  "lockfileVersion": 3
}
workspaces用于管理多包仓库(Monorepo)结构的字段。它允许你在一个单独的 npm 项目中管理多个子包(或称为工作空间),使得你可以在一个统一的代码库中同时管理和发布多个模块或包。// 将 packages 和 libs 目录下的所有子包作为工作空间
{
  "workspaces": [
    "packages/*",
    "libs/*"
  ]
}
deprecated用于标记一个包或模块已不再推荐使用。这通常是由包的维护者添加的,表示该包已经过时,可能存在问题,或者不再继续维护。{
  "name": "old-package",
  "version": "1.0.0",
  "deprecated": "This package is no longer maintained. Please use 'new-package' instead."
}
dist包的分发信息。在包发布到 npm registry 后,npm 会自动为该包生成 dist 字段,并将其与包的 tarball、shasum 和 integrity 等信息一起存储。开发者通常不会手动添加 dist 字段,因为 npm 会自动处理这些信息。{
  "name": "my-package",
  "version": "1.0.0",
  "dist": {
    "tarball": "https://registry.npmjs.org/my-package/-/my-package-1.0.0.tgz",
    "shasum": "d41d8cd98f00b204e9800998ecf8427e",
    "integrity": "sha512-XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  }
}
sideEffects

用于优化 JavaScript 模块的打包过程,尤其是在使用诸如 Webpack 这样的打包工具时。它告诉打包工具哪些模块或文件没有副作用,从而可以在树摇(Tree Shaking)过程中安全地移除未使用的代码。

false:整个项目中没有副作用,为使用的代码可以被安全的移除。

true:所有文件都包含副作用。

{
  "sideEffects": true/false
}

// 只有下面配置的文件有副作用

{
  "sideEffects": [
    "./src/some-file.js",
    "./src/some-other-file.js"
  ]
}

browser用于指定在浏览器环境下替代 Node.js 环境中的某些模块或功能。这通常用于开发同时支持 Node.js 和浏览器的库或模块,确保在浏览器中能够使用适当的替代模块或文件。// 假设你有一个包,它在 Node.js 中使用了 fs 和 path 模块,而这些模块在浏览器中并不可用。你可以使用 browser 字段来告诉打包工具(如 Webpack 或 Rollup)使用不同的实现。
{
  "name": "my-library",
  "version": "1.0.0",
  "browser": {
    "fs": false,  // 在浏览器环境中,禁用 'fs' 模块
    "path": "./browser/path.js"  // 在浏览器环境中,使用自定义的 'path.js' 替代 'path' 模块
  }
}
prettier

用于自动格式化代码,使代码风格统一,符合指定的规则。Prettier 支持多种编程语言(如 JavaScript、TypeScript、HTML、CSS、JSON 等),并且可以与各种编辑器(如 VS Code、Sublime Text 等)以及构建工具(如 Webpack、Gulp 等)集成,自动格式化代码。

semi:是否在每行代码末尾加分号,默认为 true。设置为 false 表示不加分号。
singleQuote:是否使用单引号,默认为 false(即使用双引号)。设置为 true 表示使用单引号。
tabWidth:缩进的空格数,默认是 2。
trailingComma:多行对象、数组等的最后一个元素是否加逗号。可以是 none、es5 或 all。

{
  "name": "my-project",
  "version": "1.0.0",
  "prettier": {
    "semi": true,  // 使用分号
    "singleQuote": false,  // 使用双引号
    "tabWidth": 4,  // 缩进为 2 个空格
    "trailingComma": "all"  // 在多行对象或数组最后一个元素后添加逗号
  }
}
directories用于指定项目中的目录结构。它主要用于指定项目中需要特别关注的目录,通常是用于某些工具或发布工具(如 npm)了解项目的结构,或者用于决定要包含哪些文件。
lib:指定项目的库文件目录,通常是源代码所在的目录。
bin:指定包含可执行文件的目录。
test:指定项目的测试文件目录。
doc:指定项目的文档目录。
man:指定手册页目录。
{
  "name": "my-package",
  "version": "1.0.0",
  "directories": {
    "lib": "src",
    "bin": "bin",
    "test": "tests",
    "doc": "docs"
  }
}

相关文章:

package.json 文件配置

创建 Node.js 的配置文件 package.json npm init -y package.json 文件配置说明 配置说明示例name指定项目的名称&#xff0c;必须是小写字母&#xff0c;可以包含字母、数字、连字符&#xff08;-&#xff09;或下划线&#xff08;_&#xff09;&#xff0c;不能有特殊字符…...

Managed Lustre 和 WEKA:高性能文件系统的对比与应用

Managed Lustre 和 WEKA&#xff1a;高性能文件系统的对比与应用 1. 什么是 Managed Lustre&#xff1f;主要特点&#xff1a;适用场景&#xff1a; 2. 什么是 WEKA&#xff1f;主要特点&#xff1a;适用场景&#xff1a; 3. Managed Lustre 和 WEKA 的对比4. 如何选择 Managed…...

【matlab】大小键盘对应的Kbname

matlab中可以通过Kbname来识别键盘上的键。在写范式的时候&#xff0c;遇到一个问题&#xff0c;我想用大键盘上排成一行的数字按键评分&#xff0c;比如 Kbname(1) 表示键盘上的数字1&#xff0c;但是这种写法只能识别小键盘上的数字&#xff0c;无法达到我的目的&#xff0c;…...

Python实现从SMS-Activate平台,自动获取手机号和验证码(进阶版2.0)

前言 本文是该专栏的第52篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,笔者在文章《Python实现SMS-Activate接口调用,获取手机号和验证码》中,有详细介绍基于SMS-Activate平台,通过python来实现自动获取目标国家的手机号以及对应的手机号验证码。 而…...

HCIA项目实践--静态路由的拓展配置

7.7 静态路由的拓展配置 网络中的两个重要思想&#xff1a; &#xff08;1&#xff09; 实的不行来虚的&#xff1b; &#xff08;2&#xff09; 范围太大&#xff0c;划分范围。&#xff08;分治&#xff09; 7.7.1 负载均衡 &#xff08;1&#xff09;定义 负载均衡是一种网…...

缓存三大问题及其解决方案

缓存三大问题及其解决方案 1. 前言 ​ 在现代系统架构中&#xff0c;缓存与数据库的结合使用是一种经典的设计模式。为了确保缓存中的数据与数据库中的数据保持一致&#xff0c;通常会给缓存数据设置一个过期时间。当系统接收到用户请求时&#xff0c;首先会访问缓存。如果缓…...

Unity崩溃后信息结合符号表来查看问题

目录 SO文件符号表对调试和分析的重要性调试方面分析方面 错误数据安装Logcat解释符号表设置符号文件路径生成解析 相关参考 SO文件 so 文件&#xff08;Shared Object File&#xff0c;共享目标文件&#xff09;和符号表紧密相关&#xff0c;它们在程序的运行、调试和分析过程…...

C#的DataTable类精简汇总

目录 一、DataTable概述 1.创建 DataTable 2.添加行 3.修改行 4.删除行 5.查询行 6.排序行 7.合并 DataTable 8.克隆 DataTable 9.复制 DataTable 10.使用 DataView 过滤和排序 11.使用 DataTable 的事件 12.使用 DataTable 的约束 13.使用 DataTable 的表达式列 …...

DeepSeek官方发布R1模型推荐设置

今年以来&#xff0c;DeepSeek便在AI领域独占鳌头&#xff0c;热度一骑绝尘。其官方App更是创造了惊人纪录&#xff0c;成为史上最快突破3000万日活的应用&#xff0c;这一成绩无疑彰显了它在大众中的超高人气与强大吸引力。一时间&#xff0c;各大AI及云服务厂商纷纷投身其中&…...

STM32 ADC介绍(硬件原理篇)

目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器&#xff08;维持-阻塞D触发器&#xff…...

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

linux 板子的wifi模块连上路由器后,用udhcpc给板子wifi分配ip,udhcpc获取到ip,但没有写入wlan0网卡上

linux 板子的wifi模块连上路由器后&#xff0c;用udhcpc给板子wifi分配ip&#xff0c;udhcpc获取到ip,但没有写入wlan0网卡上 这里的问题是 /usr/share/udhcpc/default.script脚本有问题 用下面正确脚本&#xff0c;即可写进去 #!/bin/sh# udhcpc script for busybox # Copyr…...

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…...

性格测评小程序03搭建用户管理

目录 1 创建数据源2 搭建后台3 开通权限4 搭建启用禁用功能最终效果总结 性格测评小程序我们期望是用户先进行注册&#xff0c;注册之后使用测评功能。这样方便留存用户的联系信息&#xff0c;日后还可以推送对应的相关活动促进应用的活跃。实现这个功能我们要先创建数据源&…...

Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)

字符串处理在几乎所有的编程语言中都是一个绕不开的话题&#xff0c;在一些高级语言当中&#xff0c;对字符串的处理支 持度更是完善&#xff0c;譬如 C、 C# 、 Python 等。若在 C 语言中想要对字符串进行相关的处理&#xff0c;譬如将两个字符串进行拼接、字符串查找、两个…...

如何使用CSS画一个三角形,原理是什么?

如何用 CSS 画一个三角形&#xff1f;原理和实战指南 一、核心原理 CSS 画三角形的本质是利用边框&#xff08;border&#xff09;的叠加特性。当一个元素的宽高为 0 时&#xff0c;其边框会以对角线形式相交&#xff0c;形成四个独立的三角形区域。通过控制某一边的边框颜色为…...

调用DeepSeek API接口:实现智能数据挖掘与分析

在当今数据驱动的时代&#xff0c;企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台&#xff0c;提供了强大的API接口&#xff0c;帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用DeepSeek API接口&…...

iOS主要知识点梳理回顾-5-运行时方法交换

方法交换可以放在 load 或 initialize 方法中&#xff0c;也可以自己根据时机来空&#xff0c;比如开启某个开关后才需要交换方法。如果是在load中调用&#xff0c;交换工作会在类加载时&#xff08;程序启动&#xff09;自动调用&#xff1b;如果是在initialize中调用&#xf…...

基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!

一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统&#xff0c;专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈&#xff0c;提供了丰富的功能…...

uni-app 学习(一)

一、环境搭建和运行 &#xff08;一&#xff09;创建项目 直接进行创建 &#xff08;二&#xff09;项目结构理解 pages 是页面 静态资源 打包文件&#xff0c;看我们想输出成什么格式 app.vue 页面的入口文件 main.js 是项目的入口文件 存放对打包文件的配置 pages 存放整…...

本地部署DeepSeek + AnythingLLM 搭建高效安全的个人知识库

环境准备: 本地部署方案请参考博客:windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)-CSDN博客 windows平台本地部署DeepSeek大模型+Chatbox界面(可以离线使用)-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确…...

【git-hub项目:YOLOs-CPP】本地实现03:跑自己的实例分割模型

本节博客,我们继续讲解,如何在cpu+windows上,跑通自己的实例分割模型。 目录 模型 类别名称 量化 导出模型 拉取最新代码 进入官网ultralytics 模型 该项目包括存储在 models 和 quantized_models 目录中的各种预训练标准 YOLO 模型: 模型类型模型名称标准模型yolo5…...

【Qt】QObject类的主要功能

在 Qt 中&#xff0c;QObject 类是所有 Qt 对象的基类&#xff0c;提供了许多基础功能&#xff0c;使得 Qt 的对象系统能够有效地工作。它为其他类提供了核心的机制&#xff0c;比如信号和槽机制、对象树结构、内存管理等。 QObject 类的主要功能&#xff1a; 信号和槽机制&am…...

OpenEuler学习笔记(三十):在OpenEuler上搭建3D建模环境

在OpenEuler上搭建3D建模环境&#xff0c;通常可以选择一些常见的3D建模软件&#xff0c;如Blender、FreeCAD等。以下以搭建Blender和FreeCAD这两款软件的使用环境为例&#xff0c;为你详细介绍搭建步骤。 搭建Blender 3D建模环境 1. 更新系统软件包 首先&#xff0c;确保系…...

nsc account 及user管理

从安全角度&#xff0c;推荐使用sign 模式进行nats account及用户管理 把权限放到account level 用户密码泄露可以通过快速更换用户可以设置过期日期&#xff0c;进行安全轮换 此外通过nsc 管理用户和权限&#xff0c;可以统一实现全局管控&#xff0c;包括subject管控&#…...

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好设置Ollama环境变量验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话 调整gpu精度 介绍 Deepseek1.5b能够运行在只用cpu和gpu内…...

Git子模块实战:大型后台管理系统模块拆分实践

案例背景 某企业级后台管理系统需要拆分为三个核心模块&#xff1a; 权限中心 (auth-center)&#xff1a;负责RBAC权限管理数据可视化 (data-visualization)&#xff1a;包含BI看板模块工作流引擎 (workflow-engine)&#xff1a;审批流程核心组件 每个模块由独立团队开发维护…...

【做一个微信小程序】校园事件页面实现

前言 为了进一步扩展校园事件页面的功能,我们可以添加 搜索、分类筛选 和 渐变卡片色 等特性。以下是详细的方案和源码实现。 扩展功能设计 1. 搜索功能 在页面顶部添加搜索框,用户输入关键词后,筛选出匹配的事件。2. 分类筛选 在页面顶部添加分类标签(如“全部”、“活动…...

基于 Filebeat 的日志收集

在现代分布式系统中&#xff0c;日志数据作为关键的监控与故障排查依据&#xff0c;越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;生态系统中的应用&#xff0c;帮助开发者构建高效、稳定的日…...