分钟
这是叉子 https://www.npmjs.com/package/memfs (中文(简体) ),因为那里有一大堆关键的bug和缺失的维护,这也许不是该项目的优先,而是绝对是我的优先(尽管我正在发送PR's). 上流媒体每周下载近一千万次!
我所做的一切包括:
- 更新到最新笑话, 并增加用于测试的最大工人; 用一个测试解决一个问题
- 更新到最新的打字和节点打字
- 从 es5 更新到 es2020 的目标; 这确实使代码运行效率更高, 如果您想要直接编辑节点 模块, 调试则容易得多
- 弥补npm审计显示的13个安全弱点
- 升级并切换到使用默认值
- 切换到 package-lock.json 而不是纱线锁
- 修复 chmod同步错误
- 修复 utimes 同步错误
- 修复 realpath 同步错误
见 https://github.com/sagemathinc/memfs-js (中文(简体) )
上游描述
模拟文件系统 节点的 fs API 密码。 。 。 .
- 节点的
fs已执行 API,见 旧 API 状态, (中文(简体) ), 缺少列表, (中文(简体) ), 缺少opendir - 存储内存中的文件, 以
Buffer编号 - 丢出与 Node.js 相同的错误
- 概念为 i-节点
- 执行 硬链接
- 执行 软链接 (aka 符号链接,符号链接)
- 今后可执行授权*
- 可在浏览器中使用,参见
memfs-webpack
安装
npm install --save memfs
使用量
import { fs } from "memfs";
fs.writeFileSync("/hello.txt", "World!");
fs.readFileSync("/hello.txt", "utf8"); // World!
从普通 JSON 创建文件系统 :
import { fs, vol } from "memfs";
const json = {
"./README.md": "1",
"./src/index.js": "2",
"./node_modules/debug/index.js": "3",
};
vol.fromJSON(json, "/app");
fs.readFileSync("/app/README.md", "utf8"); // 1
vol.readFileSync("/app/src/index.js", "utf8"); // 2
导出为 JSON :
vol.writeFileSync("/script.sh", "sudo rm -rf *");
vol.toJSON(); // {"/script.sh": "sudo rm -rf *"}
用于测试 :
vol.writeFileSync("/foo", "bar");
expect(vol.toJSON()).toEqual({ "/foo": "bar" });
创建所需的文件系统卷 :
import { Volume } from "memfs";
const vol = Volume.fromJSON({ "/foo": "bar" });
vol.readFileSync("/foo"); // bar
const vol2 = Volume.fromJSON({ "/foo": "bar 2" });
vol2.readFileSync("/foo"); // bar 2
使用 memfs 合并 unionfs 创建一个文件系统
从您的内存卷和真实的磁盘文件系统:
import * as fs from "fs";
import { ufs } from "unionfs";
ufs.use(fs).use(vol);
ufs.readFileSync("/foo"); // bar
使用 fs-monkey 到猴斑点的 require 函数 :
import { patchRequire } from "fs-monkey";
vol.writeFileSync("/index.js", 'console.log("hi world")');
patchRequire(vol);
require("/index"); // hi world
文档
另见
spyfs- 监视文件系统行动unionfs- 建立一个由多个文件系统卷组成的联盟linkfs- 重定向文件系统路径fs-monkey- 猴帽节点的fs模块和require函数libfs- 在 JavaScript 中执行真实文件系统(执行 UNIX 系统调用)
许可证
取消许可证 - 公有领域.