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 用来执行脚本。
  • 通过合理使用 dependenciesdevDependencies,你可以确保生产环境和开发环境的依赖区分开来。
相关推荐
水冗水孚4 小时前
效能工具(九)之编写nodejs脚本使用get-video-duration批量读取视频时长,并生成sql语句修复数据库表字段值
sql·node.js
huangql5205 小时前
Vite与Webpack完全指南:从零开始理解前端构建工具
前端·webpack·node.js
api_180079054605 小时前
【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
大数据·开发语言·python·数据挖掘·node.js
用户47949283569159 小时前
你知道node背后的libuv是什么吗
node.js
pixle013 小时前
从零学习Node.js框架Koa 【一】 Koa 初探从环境搭建到第一个应用程序
前端·node.js·web·koa.js·web全栈·node服务端框架
Moment15 小时前
为什么我们从 Python 迁移到 Node.js
前端·后端·node.js
冴羽1 天前
为什么在 JavaScript 中 NaN !== NaN?背后藏着 40 年的技术故事
前端·javascript·node.js
IT古董1 天前
全面理解 Corepack:Node.js 的包管理新时代
前端·node.js·corepack
Jonathan Star1 天前
NestJS 是基于 Node.js 的渐进式后端框架,核心特点包括 **依赖注入、模块化架构、装饰器驱动、TypeScript 优先、与主流工具集成** 等
开发语言·javascript·node.js
学习3人组1 天前
清晰地说明 NVM、NPM 和 NRM 在 Node.js 开发过程中的作用
前端·npm·node.js