node.js版本管理之---npm 和 package.json

npm(Node Package Manager)简介

npm 是一个用于管理 JavaScript 项目依赖包的工具。它包含了一个公共的包管理库(npm registry),开发者可以使用它来安装、更新、卸载和管理 Node.js 包。npm 也用于管理项目的依赖和其他相关任务。

常见的 npm 操作包括:
  • 安装包 :npm install <package-name>
  • 更新包 :npm update <package-name>
  • 卸载包 :npm uninstall <package-name>
  • 查看已安装包 :npm list
  • 创建新项目 :npm init
  • 发布包 :npm publish
主要功能:
  • 管理项目的依赖包(安装、卸载、更新)。
  • 维护和共享自己的 JavaScript 包(通过 npm publish)。
  • 通过 scripts 字段管理项目的命令行任务(例如:构建、测试、启动等)。

package.json 简介

package.json 是 Node.js 项目中的一个核心文件,描述了项目的元数据、依赖关系、项目配置和脚本命令等信息。它可以帮助 npm 识别项目,并了解项目的依赖、版本和其他关键信息。

基本结构:

一个典型的 package.json 文件看起来像这样:

javascript 复制代码
{
  "name": "my-project",            // 项目名称
  "version": "1.0.0",              // 项目版本
  "description": "My awesome app", // 项目描述
  "main": "index.js",              // 入口文件
  "scripts": {                     // 脚本命令
    "start": "node index.js",      // 启动应用命令
    "test": "mocha"                // 测试命令
  },
  "author": "Your Name",           // 项目作者
  "license": "MIT",                // 项目许可证
  "dependencies": {                // 项目的生产环境依赖
    "express": "^4.17.1"
  },
  "devDependencies": {             // 项目的开发环境依赖
    "mocha": "^8.2.1"
  },
  "engines": {                     // 定义支持的 Node.js 版本
    "node": ">=14.0.0"
  }
}

如何创建 package.json

当你创建一个新的 Node.js 项目时,可以使用以下命令生成 package.json 文件:

javascript 复制代码
npm init

该命令会提示你填写一些基本信息,生成一个交互式的 package.json 文件。如果想跳过这些提示并自动生成一个带有默认值的 package.json 文件,可以使用:

javascript 复制代码
npm init -y

package-lock.json 文件

除了 package.json 外,npm 在安装依赖时会生成一个 package-lock.json 文件。该文件记录了每个安装包的确切版本号,并确保其他开发人员或 CI/CD 环境在安装时使用相同的依赖版本。即使两个开发者使用不同版本的 npm,只要他们都使用相同的 package-lock.json 文件,安装的依赖版本是一样的。

  • 安装时 ,如果 package-lock.json 存在,npm 会严格遵循其中的依赖版本。
  • 删除时 ,package-lock.json 会更新以反映卸载的依赖。

总结

  • npm 是 Node.js 的包管理工具,用于安装、管理和发布 JavaScript 包。
  • package.json 文件是项目的配置文件,记录了项目的元信息、依赖、脚本等。
  • npm init 可以用来生成 package.json 文件,npm install 用来安装依赖,npm run 用来执行脚本。
  • 通过合理使用 dependencies 和 devDependencies,你可以确保生产环境和开发环境的依赖区分开来。
相关推荐
w16639 小时前
零 Root 无 PC:我让 AI 在手机上把鸿蒙 HDC 协议的底裤扒了下来
node.js
严肃小白兔1 天前
TanStack Router 更新构建工具链:Node.js 兼容性、路由分割与前端工程实践
前端·node.js·状态模式
一缕82年的清风2 天前
用了 3 年 Notion 和 Obsidian 后,为什么我最终把所有身家搬到了思源笔记?
node.js
Dumbness2 天前
一份 JSON 生成增删改查接口,入参清洗漏了什么:Number(" ") 是 0,搜 100% 把 1000 元券也搜出来
node.js·express
FungLeo4 天前
成为全栈·基础补充·Node.js 运行时:事件循环与异步
javascript·node.js·事件循环·后端开发·异步编程·成为全栈
用户087308654874 天前
用 GUI 自动化写了一个群聊 AI:5 个真实事故,和 7 条让 AI 不像机器人的设计
node.js
Dumbness5 天前
毕设后台导出 CSV 的 4 个坑:date 字段漏了公式防护,搜索框输入 % 能扫全表
node.js·express
wno7047 天前
node.js中使用jquery
前端·node.js·jquery
damoluomu8 天前
Node 的 Headless 出厂没有前台,Java 的 Headless 是从门户里长出来的
java·开发语言·node.js