通俗讲解 Node.js 核心工具命令node/npm/npx

以下是针对初学者的 ​​Node.js 核心工具命令详解​ ​,用通俗语言和场景化示例,帮你快速理清 nodenpmcnpmnpx 的作用和用法:


一、node:JavaScript 运行时(核心引擎)

​作用​

node 是 Node.js 的核心命令,用于​​执行 JavaScript 代码​​(本地文件或直接输入代码),是 Node.js 环境的"启动器"。

​基本用法​

1. 执行本地 JavaScript 文件

bash 复制代码
# 运行当前目录下的 app.js 文件
node app.js

# 运行指定路径的文件(跨目录)
node ./src/utils.js

2. 启动交互式 REPL(读取-求值-打印循环)

REPL 是一个"试错窗口",可直接输入 JavaScript 代码并立即看到结果,适合学习或调试小片段。

ini 复制代码
node  # 进入 REPL(输入 .exit 退出)
> 1 + 1  # 输入代码,输出 2
> const name = "Alice"; name  # 输出 "Alice"

3. 执行代码片段(无需保存文件)

-e 参数直接执行一段 JavaScript 代码:

arduino 复制代码
node -e "console.log('Hello, Node.js');"  # 输出 "Hello, Node.js"

4. 查看 Node.js 版本

bash 复制代码
node -v  # 输出版本号(如 v18.16.0)

二、npm:Node.js 包管理器("应用商店")

​作用​

npm(Node Package Manager)是 Node.js 官方自带的包管理工具,用于​​安装、卸载、管理第三方库​ ​(如 lodashexpress),并记录项目依赖(通过 package.json 文件)。

​基本用法​

1. 初始化项目(生成 package.json

新建项目时,用 npm init 快速生成配置文件(记录项目名称、版本、依赖等信息)。

csharp 复制代码
# 一路回车(使用默认值),生成 package.json
npm init -y  # -y 表示"全部默认同意"

2. 安装本地依赖(项目内使用)

安装一个第三方库(如 axios)到项目的 node_modules 目录,供代码调用:

perl 复制代码
# 安装最新版 axios(本地)
npm install axios

# 安装指定版本(如 1.5.0)
npm install axios@1.5.0

# 安装多个包(用空格分隔)
npm install lodash express

3. 安装全局依赖(系统级工具)

有些工具需要全局可用(如 webpack-clinodemon),用 --global(或 -g)参数:

bash 复制代码
# 全局安装 nodemon(自动重启 Node.js 应用)
npm install nodemon -g

4. 卸载依赖

bash 复制代码
# 卸载本地依赖
npm uninstall axios

# 卸载全局依赖
npm uninstall nodemon -g

5. 执行项目脚本(快捷运行命令)

package.json 中定义 scripts 字段,用 npm run 执行自定义命令:

json 复制代码
// package.json
{
  "scripts": {
    "start": "node app.js",       // 启动应用
    "dev": "nodemon app.js"       // 用 nodemon 启动(自动重启)
  }
}
arduino 复制代码
# 执行 start 脚本(等价于 node app.js)
npm run start

# 执行 dev 脚本(等价于 nodemon app.js)
npm run dev

6. 查看依赖树

bash 复制代码
npm ls  # 查看项目依赖的层级结构(本地)
npm ls -g  # 查看全局依赖

三、cnpm:淘宝镜像加速的 npm(国内用户必备)

​作用​

npm 官方源()服务器在国外,国内下载包速度慢。cnpm 是淘宝提供的​​国内镜像源 npm 客户端​​,大幅提升安装速度。

​基本用法​

1. 安装 cnpm

ini 复制代码
# 用 npm 全局安装 cnpm(指定淘宝镜像源)
npm install -g cnpm --registry=https://registry.npmmirror.com

2. 使用 cnpm 替代 npm

安装包时,将 npm install 替换为 cnpm install,其他命令(如 uninstallrun)与 npm 一致:

bash 复制代码
# 安装 axios(国内镜像加速)
cnpm install axios

# 全局安装 nodemon
cnpm install nodemon -g

3. 切换回 npm 官方源(可选)

若需使用官方源(如测试新包),可临时修改镜像源:

arduino 复制代码
npm config set registry=https://registry.npmjs.org  # 切回官方源
npm config get registry  # 查看当前源

四、npx:临时执行包命令(无需全局安装)

​作用​

npx(随 npm 5.2+ 内置)是​​临时执行包命令的工具​​,无需提前全局安装包,直接调用包的可执行文件,避免全局环境污染。

​基本用法​

1. 执行本地安装的包(项目内)

项目中安装了 webpack,但不想全局安装,可用 npx 直接运行:

bash 复制代码
# 本地安装过 webpack(在 node_modules 中)
npx webpack  # 临时调用 webpack 命令

2. 执行远程包(无需安装)

直接执行一个未安装过的包(npx 会临时下载并执行):

bash 复制代码
# 创建 React 项目(无需全局安装 create-react-app)
npx create-react-app my-app

# 运行 ESLint 检查代码(未全局安装时)
npx eslint ./src

3. 指定版本执行

kotlin 复制代码
# 执行指定版本的包(如 lodash@4.17.21)
npx lodash@4.17.21

4. 与 npm run 的区别

  • npm run:依赖 package.json 中的 scripts 配置,适合高频重复命令(如启动、打包)。
  • npx:适合一次性任务或临时调用(如创建项目、运行工具),无需提前配置脚本。

五、总结:四大命令的核心场景

​命令​ ​核心作用​ ​典型场景​
node 执行 JavaScript 代码 运行 app.js、启动 REPL、执行代码片段(node -e "..."
npm 管理项目依赖(本地/全局) 初始化项目(npm init)、安装包(npm install)、执行脚本(npm run
cnpm 加速 npm 安装(国内用户) 替代 npm install,提升下载速度(cnpm install axios
npx 临时执行包命令(无需全局安装) 创建项目(npx create-react-app)、运行未安装的工具(npx eslint

六、实战示例(完整工作流)

假设你要开发一个 Node.js 小工具,步骤如下:

  1. ​创建项目目录并初始化​​:

    perl 复制代码
    mkdir my-tool && cd my-tool
    npm init -y  # 生成 package.json
  2. ​安装依赖(用 cnpm 加速)​​:

    bash 复制代码
    cnpm install axios  # 安装 axios 用于网络请求
  3. ​编写代码(src/app.js)​​:

    ini 复制代码
    const axios = require('axios');
    axios.get('https://api.example.com/data')
      .then(res => console.log(res.data))
      .catch(err => console.error(err));
  4. ​用 node 运行代码​​:

    bash 复制代码
    node src/app.js
  5. ​临时执行 ESLint 检查(未全局安装)​​:

    bash 复制代码
    npx eslint src/app.js

通过以上命令,你可以高效完成 Node.js 项目的开发、依赖管理和工具调用。记住:node 是执行代码的"发动机",npm 是"工具仓库管理员",cnpm 是"国内高速快递",npx 是"临时工具搬运工"! 🚀

相关推荐
清秋29 分钟前
全网最全 ECMAScript 攻略( 更新至 ES2025)
前端·javascript·ecmascript 6
Juchecar1 小时前
Node.js package.json 配置详解 + TypeScript + ES Module 集成指南
javascript
李明卫杭州1 小时前
深入理解CSS变量(Custom Properties)
前端·javascript
一枚前端小能手2 小时前
💫 回调套回调写到崩溃,异步编程其实可以很优雅
前端·javascript
用户47949283569152 小时前
深入理解JavaScript:手写实现Array.prototype.push方法
前端·javascript
前端Hardy2 小时前
HTML&CSS&JS:卡片3D倾斜效果
前端·javascript·css
前端Hardy2 小时前
HTML&CSS&JS:一键登录页面
前端·javascript·css
Winwin2 小时前
本地没有问题啊!?crypto.randomUUID() 的坑
javascript
极客BIM工作室2 小时前
C++ 限制类对象数量的技巧与实践
开发语言·javascript·c++
Juchecar2 小时前
Node.js 模块系统详解之CommonJS 与 ES Module概念和配置选择
javascript