Node小知识点

49 阅读3分钟
查看全局依赖的存放路径
npm root -g
查看当前项目的源镜像 && 设置当前项目的源镜像
npm config get registry

npm config set registry https://registry.npmmirror.com/
__filename && __dirname

CJS下使用

  • __filename:当前正在执行脚本的绝对路径。
  • __dirname:当前执行脚本所在目录的绝对路径。

EMS下使用

import { fileURLToPath } from 'url'
import { dirname } from 'path'
import { createRequire } from 'module'

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

console.log('__filename', __filename)
console.log('__dirname', __dirname)

const require = createRequire(import.meta.url)
console.log('name', require('./package.json').name)
process 用法

process.argv:返回一个数组,包含启动nodejs进程时传递的命令行参数。
第一个参数是 Node 在机器上的位置。
第二个参数是执行文件的绝对路径。
后续参数为命令行传递的自定义参数。 image.png

process.cwd():获取当前工作目录的绝对路径。

process.env:获取当前执行环境的环境变量(对象形式) image.png

process.exit([code]):退出node进程

path

1.path.join()

将多个路径拼接成一个相对路径(或者绝对路径,取决于第一个参数是否是根路径)。 image.png

2.path.resolve

将多个路径拼接成一个绝对路径,返回一个解析后的绝对路径。

即如果传入相对路径,会以当前工作目录为基准,计算出绝对路径。如果传入的是绝对路径,则以传入的绝对路径为基础准 image.png

3.path.dirname

返回路径的目录名 image.png

4.path.basename

返回路径中的文件名,并可选的去给定的文件扩展名 image.png

5.path.extname

获取路径中的文件拓展名 image.png

6.path.normalize

规范化路径,将路径中不规范部分调整为标准格式,并处理以下问题:

  1. 路径中斜杠数量过多
  2. 路径中存在的./../,即相对路径情况。

image.png

7.path.parse

用于解析文件路径,将其拆解为一个对象 image.png

fs

一.文件操作

1.读取文件

fs.readFileSync

  • 参数一:设置要读取的文件路径。
  • 参数二:设置读取的编码格式。

utf-8方式读取

import fs from 'fs';

const con = fs.readFileSync('./demo.js', 'utf8');
console.log(con);

二进制方式读取

import fs from 'fs';

const buffer = fs.readFileSync('./demo.js');
console.log(buffer.toString());

image.png

2.写入文件

fs.writeFileSync

  • 参数 1:输出文件路径
  • 参数 2:输出内容
  • 参数 3(可选):编码格式
import fs from 'fs';

fs.writeFileSync('./1.txt', 'hellow word', 'utf-8');

image.png

3.追加文件内容输出

使用 fs.appendFileSync 向文件末尾追加写入内容

import fs from 'fs';

fs.appendFileSync('./1.txt', '\nyangmy', 'utf-8');

image.png

4.移动/重命名文件

使用 fs.renameSync 重命名文件,或者移动文件位置 重命名文件:

import fs from 'fs';

fs.renameSync('./1.txt', '2.txt');

移动文件:

import fs from 'fs';

fs.renameSync('./2.txt', './src/2.txt');
5.删除文件

fs.rmSync

// 删除文件
fs.rmSync('./3.txt');

// 删除目录及下面的文件
fs.rmSync('test-dir', { recursive: true });

二.目录操作

1.### 读取目录所有文件

fs.readdirSync,获取目录下的文件信息。

import fs from 'fs';

const files = fs.readdirSync('./src');
console.log(files);

image.png

可通过指定第二个参数 withFileTypes:true 使返回结果包含类型。

import fs from 'fs';

const files = fs.readdirSync('./src', { withFileTypes: true });
console.log(files.map((f) => ({ name: f.name, isDirectory: f.isDirectory() })));

image.png

2.创建目录

fs.mkdirSync创建目录,可以根据设置recursive: true参数来创建多级目录。

import fs from 'fs';

fs.mkdirSync('a/b/c', { recursive: true });
3.删除目录

fs.rmdirSync('a')删除目录(不为空时不能删除)

import fs from 'fs';

fs.rmdirSync('a');

fs.rmdirSync('a', { recursive: true })删除目录及目录下的文件和文件夹

import fs from 'fs';

fs.rmdirSync('a', { recursive: true });
4.监听目录变更

fs.watch监听文件

import fs from 'fs';
// 监听当前目录下所有的文件和子目录中的文件
fs.watch('./src', { recursive: true }, (eventType, filename) => {
  console.log(`File '${filename}' has changed: ${eventType}`);
});

image.png