# memory-tree **Repository Path**: f2e-server/memory-tree ## Basic Information - **Project Name**: memory-tree - **Description**: map file system into memory within lodash - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-07-31 - **Last Updated**: 2023-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # memory-tree map file system into memory within lodash ## Install `$ npm i memory-tree --save` ## Usage `test/index.js` ``` javascript const path = require('path') const MemoryTree = require('memory-tree') const memory = MemoryTree({ /** * 存储数据时触发 * @param {string} pathname 对应路径, 会根据 `\/` 分割 * @param {string/buffer} data 从文件系统获取的源数据 * @return {string/buffer} 返回修改后的数据 */ onSet: (pathname, data) => data, /** * 获取数据时触发 * @param {string} pathname 对应路径, 会根据 `\/` 分割 * @param {string/buffer} data 之前存入的数据 * @return {string/buffer} 返回修改后的数据 */ onGet: (pathname, data) => data, /** * 文件修改时触发检查 `fs.watch` 的 callback * @param {string} eventType 修改类型 如: 'change' * @param {string} pathname 事件触发的文件路径 */ buildWatcher: (eventType, pathname) => console.log(eventType, pathname), /** * 允许加载到内存的资源 * @param {string} pathname 待检查资源路径 * @return {boolean} 是否允许加载到内存 */ buildFilter: (pathname) => !/node_modules|([\\\/]|^)\./.test(pathname), /** * 允许从内存中保存到文件系统的资源 * @param {string} pathname 待检查资源路径 * @param {string/buffer} data 资源内容 (注: 检查路径等时刻, data未设置, 参考 lib/mem2fs.js) * @return {boolean} 是否允许保存到文件 */ outputFilter: (pathname, data) => (!data || data.length < 64 * 1024) && !/node_modules|([\\\/]|^)\./.test(pathname), /** * 输出时重命名资源 * @param {string} pathname 待检查资源路径 * @param {string/buffer} data 资源内容 【可以根据内容md5重命名】 * @return {string} 重命名结果 */ outputRename: (pathname, data) => pathname }) memory.build(path.resolve(__dirname, '../'), {watch: 1}).then(e => { memory.output(path.resolve(__dirname, '../../memory-tree-out')).then(e => { console.log('copy ok!') }).catch(e => { console.log(e) }) }).catch(e => { console.log(e) }) ```