前言
日常中,当要写一些脚本或者 webpack 配置的时候,需要用到一些 Node 的 API。这里整理了一下常用的 Node 相关模块 API,供快速熟悉使用。
path
dirname,filename
- __dirname:可以看作是 nodejs 中的全局变量,它始终表示当前执行文件所在目录的完整目录名(绝对路径)
- __filename:可以看作是 nodejs 中的全局变量,它始终表示当前执行文件的完整文件名(完整绝对路)
path.parse(path)
解析路径返回一个对象,对象的属性表示 path 的元素。
例子:
1 | path.parse('/home/user/dir/file.txt'); |
path.join([…paths])
使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
例子:
1 | path.join("/foo", "bar", "baz/asdf", "quux", ".."); |
path.resolve([…paths])
把一个路径或路径片段的序列解析为一个绝对路径。
例子:
1 | path.resolve("/foo/bar", "./baz"); |
path.join 和 path.resolve 的区别
- join 是把各个 path 片段连接在一起, resolve 把‘/’当成根目录
1 | path.join("/a", "/b"); |
- resolve 在传入非/路径时,会自动加上当前目录形成一个绝对路径,而 join 仅仅用于路径拼接
1 | // 当前路径为 |
当前路径
- 获取当前 NodeJS 文件所在目录:__dirname
- 获取启动脚本所在目录:path.resolve()
fs-extra
fs 模块的功能强大,单 API 比较繁杂。fs-extra 是 fs 的一个扩展,提供了非常多的便利 API,并且继承了 fs 所有方法和为 fs 方法添加了 promise 的支持。
下列方法都是异步的,在方法后面加 Sync 后缀即对应同步方法。
ensureDir(dir: string, [callback: func])
如果目录结构不存在,则创建它,如果目录存在,则不进行创建,类似 mkdir -p。
例子:
1 | const fs = require("fs-extra"); |
ensureFile(file: string, [callback: func])
确保文件存在。如果请求创建的文件位于不存在的目录中,则会创建这些目录。如果该文件已存在,则不进行修改。
例子:
1 | const fs = require("fs-extra"); |
remove(path: string, [callback: func])
删除文件或目录。该目录可以包含内容, 类似 rm -rf
例子:
1 | const fs = require("fs-extra"); |
emptyDir(dir: string, [callback: function])
确保目录为空。如果目录不为空,则删除目录内容。如果该目录不存在,则创建该目录。目录本身不会被删除。
例子:
1 | const fs = require("fs-extra"); |
readFile | readJson(file: string, [options: object, callback: func])
读取文件内容 | 读取 JSON 文件,然后将其解析为对象
例子:
1 | const path = require("path"); |
writeFile | writeJson(file: string, [options: object, callback: func])
将内容写入文件 | 将对象写入 JSON 文件,必须保证目录存在外。
另外有 outputFile | outputJson 方法,如果父目录不存在,则会自动创建它。
例子:
1 | const path = require("path"); |
copy | move(src: string, dest: string, [options: object, callback: func])
复制文件或目录,目录可以包含内容,类似 cp -r
移动文件或目录,甚至跨设备。 类似 mv
例子:
1 | const fs = require("fs-extra"); |
环境变量
环境变量是 Nodejs 最重要的概念之一,它允许应用程序在开发、阶段和生产等不同环境中表现不同。
它通常被用于:
- 保护秘密(数据库配置、API 密钥等)
- 分配动态的系统资源,如 port_name、host_name 等
简单使用
package.json 运行脚本中添加环境变量
json1
2
3
4
5{
"scripts": {
"dev": "NODE_ENV=development node src/index.js"
}
}js 逻辑中获取环境变量
javascript1
console.log(process.env.NODE_ENV);
.env 文件配置环境变量
安装 dotenv 包
bash1
npm install dotenv --save
根目录创建.env 文件
plaintext1
2name=shane
age=25index.js 添加逻辑,加载配置
javascript1
2
3
4
5const dotenv = require("dotenv");
dotenv.config();
console.log(process.env); // 可获取到name, age配置