帮助Js在浏览器以外运行,拓展Js的运行环境,Js就可以做更多类型的工作了。就像Java的虚拟机/Python的解释器。
AI:(Node.js 和 npm 的简介)
Windows版本直接下载安装包运行即可,安装好之后配置Path,主程序是node.exe,其就像一个解释器。使用node命令就可以进入交互窗口:REPL(Read Eval Print Loop/交互式解释器),使用.exit命令退出。Node.js自带一个包管理器npm,类似pip。
Mac上安装:
brew install node node -v npm -v
Linux (Ubuntu)上安装:
# 简单 适合我这种新手 # 缺点是:可能安装的不是最新版本 并且不能管理多个node版本 sudo apt-get install nodejs npm
node的多版本管理:nvm (node version manager)
npm有“全局”和“本地”的概念
# 一个典型的 npm 包名:@vitejs/plugin-vue@5.2.1(@username/package_name@version) # 带 @ 的是「组织(Scope)」包(第三方包),不带 @ 的是「普通」包(官方包) npm list # 查看当前项目安装的包列表 npm list -g # 查看全局安装的包 # 本地安装一个包 # 默认安装到当前项目的 node_modules 文件夹中,并更新 package.json 和 package-lock.json # 此处的项目,指的是 nodejs 项目,也就是一个文件夹,内含一个 package.json # package.json 和 package-lock.json 是项目的一部分,记录本项目安装了哪些包 # 而 node_modules 文件夹应该被版本控制工具忽略 npm install <package-name> npm install <package-name>@<version> # 全局安装一个包 npm install -g <package-name> npm install -g typescript # 安装一个包,-g代表安装在全局环境下 npm install -g npm # 更新npm # install 也可用于更新 # 卸载本地包 npm uninstall <package-name> # 卸载全局包 npm uninstall -g <package-name> # 在当前目录创建 package.json npm init # 根据 package.json 安装包到 node_modules npm install
npm使用别名安装包
# npm i <别名>@npm:<真实包名> # 这样就可以做到,在一个项目里安装同一个包的不同版本 # 这个项目用到了别名安装:https://github.com/GZhonghui/WebTools npm install @esotericsoftware/spine-player-41@npm:@esotericsoftware/spine-player@4.1.54
npm指令
# 一个node项目里面(应该)都会有 package.json 文件
# 请看文件:
...
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
...
# 如何执行「构建」等指令呢?就是看上面这些配置了
npm run dev
npm run build
开发依赖 vs 正式依赖
| 类型 | 命令 | 作用 |
| dependencies | npm install xxx | 生产环境也需要的包,比如 Vue、Axios 等 |
| devDependencies | npm install -D xxx 或 –save-dev | 只在开发/构建时需要,如构建工具、UI 库(某些情况下) |
在package.json里面可以看到依赖项被标记为【dependencies】或【devDependencies】
改进版的npm(本地缓存package、增量记录package的修改等。总之就是为了减少node_modules的大小)
有很多安装方式,感觉用npm安装最简单
# pnpm 是 pnpm 的普通版本,需要 Node.js 才能运行。 npm install -g pnpm@latest-10 # @pnpm/exe 与 Node.js 一起打包成可执行文件,因此它可以在没有安装 Node.js 的系统上使用。 npm install -g @pnpm/exe@latest-10
安装好之后就可以直接代替npm了吗?
Node.js使得Js支持了哪些新特性?