node.js
安装软件
在 Ubuntu 22.04 上安装 node
snap info node|head -n 20
sudo snap install node
node --version修改 npm 代理
npm config set proxy="<http_proxy>"
npm config set https-proxy="<https_proxy>"
npm config delete proxy
npm config delete https-proxy(可选)安装 cnpm 包管理器并使用淘宝仓库镜像
export https_proxy=http://localhost:7890
npm install -g cnpm
npm install cnpm -g --registry=https://registry.npmmirror.com基本概念
注:根据上下文 npm 含义可能不一样:
- 官网:浏览发现和管理软件包
- 命令行工具:程序员和 npm 交互工具
- 包注册中心:一个 JavaScript 软件包和相关元数据的大型公开数据库
npm 以下如无特别说明,均是指命令行工具。使用示例:
npm <task> ...
npm config set registry https://registry.npmmirror.com/
npm install
npm upgrade
npm uninstall
npm run <taskName>task 支持自定义执行指定脚本或命令任务.
包管理器 npm vs yarn vs pnpm
npm: node 默认包管理器; yarn: 支持并行安装包; pnpm: 通过实现本地缓存比 yarn 更快安装包。
从 node v16.x 开始新增 corepack 管理包管理器, 使用 pnpm npx corepack use pnpm@9.10.0 。
package 包和 module 模块
npm 中的 package (包)是指 一个 package.json 文件中描述的一个文件或一个目录整体。
包可以是以下 7 种形式中一种:
- 一个目录包含被一个 package.json 文件说明的一个程序
- 一个 gzip 压缩包
- 一个解释指向 (b) 的 url
- 一个在包注册中心上发布的 包含一个
<name>@<version>字符串和 (c) 信息整体 - 一个指向 (d) 的一个字符串
<name>@<tag> - 一个有
latest标签满足 (e) 的一个字符串<name> - 一个 git 链接,克隆后产生 (a) 结果
npm 是 node.js 官方包管理器。
module (模块)是一个可以被 Node.js require() 函数在 node_modules 目录中定位任意文件或目录整体。
要被支持定位,必须是以下一种:
- 一个目录包含 package.json 文件,该文件中有一个
main字段 - 一个 JavaScript 文件
只有包含 一个 package.json 文件的模块才是包; 一个 JavaScript 文件也是包。
包名支持 scope (命名空间),避免不同用户或组织同名包会冲突。命名空间类似 @xxx/,作为包名的前缀,示例:
@npm/package-name
@npmcorp/package-namepackage.json 包描述文件
在包中添加 package.json 以便于别人管理和安装包。包发布到包注册中心必须包含一个包描述文件 package.json.
一个包描述文件包含以下信息:
- 列出你项目所有依赖的包
- 说明你项目通过使用语义化版本规则指定一个包的版
- 使你的构建可重现执行,以便于和其他开发者分享
必须字段;
version: 版本,必须是遵循语义化版本规范的x.x.x格式name: 包名 a-z_-
可选字段
author作者,格式Your Name <email@example.com> (http://example.com),邮件和网站都是可选description包描述,便于他人在 npm 官网搜到你的包main程序入口文件private是否禁止 npm 发布到公网scripts自定义可执行脚本任务dependencies生产环境才需要的依赖包devDependencies添加本地研测环境才需要的依赖包browserlist你想支持哪些版本的浏览器
生成 一个新的 package.json 文件
npm init
# 所有字段默认
npm init --yes添加依赖
npm install <package-name>
npm install <package-name> --save-devpackage-lock.json 自动解决跟踪依赖版本。
替换指定 npm 包
- npm add path/to/local/package
- 修改 package.json,
"<PackageName>": "file:../../path/to/local/pacakge",
创建和发布一个 npm 包
- 在 npmjs.org 创建账号,创建一个 organization,启用 2FA
- 在本地执行
npm login - 发布开源包
npm publish --access=public
Disable output in colorful
Case:
npm config set color false
npm install -g npm-why
npm-why fsevents > output.txt
Problem: The configuration config set color false maybe does not work.
Solution: Run npm-why fsevents > output.txt in CMD, copy it into Notepad++ by manual, then replace ESC\[\d{1,2}m in regular expression by manual.
