fs-extra模块是系统fs模块的扩展,提供了更多便利的API,并继承了fs模块的API,本文详细介绍所有操作方法,方便读者更好的操作服务端文件 fs-extra安装与引入 github地址:https ://github.com/jprichardson/node-fs-extra npm install –save fs-extra const fs = require(‘fs-extra’); fs-extra同步操作与异步操作介绍 const fs = require(‘fs-extra’) // 异步两种操作方式 // Async with promises: fs.copy(‘/tmp } catch (err) { console.error(err) } } copyFiles() fs-extra各方法介绍 异步文件操作方法 copy 复制文件或文件夹 emptyDir 清空文件夹 /package.json’, {name: ‘fs-extra’}) fs-extra简单应用(NodeJS创建一个文件夹) const fse = require(‘fs-extra’); const
利用fs-extra实现"yarn create tlist"创建项目 资源拷贝我们采用fs-extra模块实现~ 2.1 模板资源拷贝: 在模板资源拷贝时部分文件是需要我们特殊处理的,所以这部分文件在资源拷贝时就暂时过滤掉 ,fs-extra模块中的copySync就提供了过滤文件的功能~ 路径匹配的时候我们可以使用path模块中的parse函数转为对象后可以更好的操作~ export const fileIgnore = 普通文本文件使用fs-extra模块中的readFileSync读取,在输出到新文件名的文件中~ const gitignoreInfo = fsExtra.readFileSync( path.resolve fsExtra.outputFile(path.join(root, ".gitignore"), gitignoreInfo); 2.3 JSON 文件拷贝: package.json 读取后我们需要重写内容后再输出,fs-extra 总结 "yarn create tlist"的主要逻辑除去参数的收集以外就是模板的拷贝两块了,这里通过利用fs-extra实现了模板拷贝,fs-extra函数的支持还是挺不错的,拷贝文件还考虑到了支持过滤的功能
2. fs-extra fs-extra 是对 Node 原生文件管理模块(fs)的扩展,更强大、更好用(支持 Promise)。 安装: npm install --save fs-extra 示例: ? 参考: cross-env项目地址:https://github.com/kentcdodds/cross-env fs-extra项目地址:https://github.com/jprichardson
在此之前,我们先把需要用到的依赖库熟悉一下: chalk (控制台字符样式) commander (实现NodeJS命令行) download (实现文件远程下载) fs-extra (增强的基础文件操作库 yarn add -D chalk commander download fs-extra handlebars inquirer log-symbols ora update-notifier 复制代码 打开 lib/config.js 文件,添加以下代码: // 请求 fs-extra 库 const fse = require('fs-extra') const path = require('path , fs-extra 除了封装原有基础文件操作方法外,还有方便的 json 文件读写方法。 打开 lib/init.js 文件,添加以下代码: // 请求 fs-extra 库,用于文件操作 const fse = require('fs-extra') // 请求 ora 库,用于初始化项目时等待动画
yarn add -D chalk commander download fs-extra handlebars inquirer log-symbols ora update-notifier 复制代码 打开 lib/config.js 文件,添加以下代码: // 请求 fs-extra 库 const fse = require('fs-extra') const path = require('path /config.json') async function defConfig() { try { // 利用 fs-extra 封装的方法,将 jsonConfig 内容保存成 json ,fs-extra 除了封装原有基础文件操作方法外,还有方便的 json 文件读写方法。 我们需要等待 fs-extra 读取完,才可以进行下一步,如果不等待,就会继续执行 jsonConfig.mirror = link 语句,就会导致传入的 json 结构发生变化。
(当然这个在 node 10+ 已经原生实现,不过你仍然可以看看源码的实现) 长按识别二维码查看原文 https://github.com/isaacs/node-mkdirp#readme fs-extra [3]: 你会发现很多脚手架都使用了 fs-extra,它又比原生的 fs 多了什么功能呢? 长按识别二维码查看原文 https://npm.devtool.tech/fs-extra fs-events[4]: 为什么不使用原生的 fs.watch 监听文件变化呢,监听文件变化的底层操作系统原理又是什么呢 https://juejin.cn/post/7072218345138831390/ [2] mkdirp:https://github.com/isaacs/node-mkdirp#readme [3] fs-extra :https://npm.devtool.tech/fs-extra [4] fs-events:https://npm.devtool.tech/fsevents [5] graceful-fs:https
// download.ts import gitclone from 'git-clone/promise'; import fs from 'fs-extra'; import path from npm install -save handlebars 安装fs-extra。 npm install -save fs-extra @types/fs-extra 开始修改package.json。 import fs from 'fs-extra'; import path from 'path'; import handlebars from 'handlebars' export const import gitclone from 'git-clone/promise'; import fs from 'fs-extra'; import path from 'path'; import
删除非空文件夹:使用fs-extra 第三方模块来删除。 fs.watchFile:监视文件的变化 代码示例 'use strict' let fs = require("fs"); let path = require("path"); let fs2 = require('fs-extra
删除非空文件夹:使用fs-extra 第三方模块来删除。 fs.watchFile:监视文件的变化 代码示例 'use strict' let fs = require("fs"); let path = require("path"); let fs2 = require('fs-extra
手动生成package.json: { "name": "Node01", "version": "0.0.1", "dependencies": { "fs-extra": "^8.1.0" } } 用npm安装包,并保存到package.json文件中: npm install fs-extra,会自动更新安装的包名到package.json的dependencies字段里。
插件一览 chalk:命令行彩色文字 commander:完整的 node.js 命令行解决方案 figlet:花里胡哨的命令行艺术字 fs:nodejs的文件系统,多文件curd fs-extra:fs fs 和 fs-extra 这2个库主要用于nodejs环境下对文件的操作,fs-extra是fs的拓展,让更少代码可以实现同样的操作。 force参数要处理,所以选项流程函数src/tools/cliCreator/lib/index.ts可以这样写: import path from 'path'; import fse from 'fs-extra creator.ts路径里,完整代码: import { prompt } from 'inquirer'; import shell from 'shelljs'; import fse from 'fs-extra
插件一览 chalk:命令行彩色文字 commander:完整的 node.js 命令行解决方案 figlet:花里胡哨的命令行艺术字 fs:nodejs的文件系统,多文件curd fs-extra:fs fs 和 fs-extra 这2个库主要用于nodejs环境下对文件的操作,fs-extra是fs的拓展,让更少代码可以实现同样的操作。 force参数要处理,所以选项流程函数src/tools/cliCreator/lib/index.ts可以这样写: import path from 'path'; import fse from 'fs-extra creator.ts路径里,完整代码: import { prompt } from 'inquirer'; import shell from 'shelljs'; import fse from 'fs-extra
8、fs-extra:Node.js文件系统操作的强化版 在Node.js开发中,文件系统操作是一项基础而重要的任务。 fs-extra库作为Node.js内建的fs模块的扩展,提供了丰富的附加功能和实用工具,极大地简化了文件系统操作。 fs-extra的优势 扩展的功能:相较于核心fs模块,fs-extra提供了更广泛的文件和目录操作功能。 便利的函数:简化了复制、移动、删除和创建目录等常见任务。 使用fs-extra的示例 递归复制目录: const fs = require('fs-extra'); fs.copy('./src', '. 带来了许多便利,但它也引入了额外的依赖,并且随着Node.js新版本的发布,一些内置功能可能与fs-extra的功能重叠,这是在使用时需要考虑的因素。
fs-extra: 扩展了 Node.js 原生的文件系统模块(fs),提供了更多的方法,如复制、移动、删除等,方便文件的操作。 "chalk": "4.0.0", "commander": "10.0.0", "dotenv": "^16.1.4", "download-git-repo": "3.0.2", "fs-extra 若选择取消,则中断流程 此处主要使用Inquirer 库实现 import fs from "fs-extra" import Inquirer from "inquirer" const cwd =
图片 signale signale 可以用来打印信息到屏幕 fs-extra 和 klaw fs-extra 是对 fs 的包装,它提供了 promise 支持,还有一些有用的功能。 klaw 原本属于 fs-extra 的一个功能,但是现在它被抽离出来,它可以用来遍历目录。
require('express'); const router = new Router(); const path = require("path"); const fse = require("fs-extra serverChunkNumber = 0 let clientChunkNumber = 0 let chunkDir = '' 注意: 由于需要解析FormData格式的数据,并操作文件,需要安装multiparty和fs-extra npm i multiparty --save npm i fs-extra --save ③ 在 POST 请求中接收并存储文件片: //post 方法接收文件片 router.post("/"
现在可以安装ethers.js: ~/ethers-template$ npm install --save ethers 1.5 安装编译合约需要的npm包 为了编译合约,我们还需要安装solc和fs-extra } 1.7 编写合约编译脚本 下面的代码使用solc编译合约文件,将其保存为compile.js: const path = require('path'); const fs = require('fs-extra /config.json'); const fs = require('fs-extra'); const provider = ethers.getDefaultProvider(config["network keywords": [], "author": "", "license": "ISC", "dependencies": { "ethers": "^4.0.37", "fs-extra
__tests__ ├── lib └── package.json 给两个package增加公共依赖 给 pkg1 和 pkg2 这两个包都安装 fs-extra 这个包,pkg1 和 pkg2 的 package.json 的 dependency 会同时包含 fs-extra 这个包。 $ lerna add fs-extra 安装 fs-extra 之后的目录结构: lerna-demo ├── README.md ├── lerna.json ├── package.json 删除某个包 将 pkg1 里面的 glob 包删除: $ lerna exec --scope=pkg1 npm uninstall glob 抽离公共的包 上面可以看到,pkg1 和 pkg2 都依赖了 fs-extra
formidable 文件上传npm包 memcached memcache操作包 gobble-ssi ssi引入支持 ipip ip归属地查询 commander node控制台应用 fs-extra
它使用 enquirer 库提示用户输入仓库的创建者、名称、分支、和目标目录,然后使用 downloadTemplate 函数下载模板,最后使用 fs-extra 库存储下载的文件。 代码的具体实现如下: 引入依赖:`fs-extra`、`enquirer`、`downloadTemplate` 和 `print`。 (print函数实现下面会有) import fs from 'fs-extra'; import enquirer from 'enquirer'; import downloadTemplate => { print.error(err); process.exit(1); }); 如果用户输入的答案合法,则使用 downloadTemplate 函数下载模板并使用 fs-extra