1、用node语法实现一个插件,可以读文件夹里所有的文件,并修改文件。
分析:
“所有”肯定要递归
“读”和“写”肯定用node的fs模块
贴代码分析:
const fs = require("fs");
const path = require("path");
let readFile = (filePath = "./dist") => {
// 读取文件夹
fs.readdir(filePath, (err, files) => {
if (err) {
console.log("不存在目录");
}
console.log("files", files);
files.forEach((file) => {
let fileDir = path.join(filePath, file)
console.log('fileDir', fileDir)
fs.stat(fileDir, (err, status) => {
if (err) {
console.warn('获取文件stats失败');
return
}
// 判断是否是文件
let isFile = status.isFile();
// 判断是否是文件夹
let isDir = status.isDirectory();
if (isFile) {
// 读取文件
let content = fs.readFileSync(fileDir, 'utf-8')
if (content.match(/<!-- built files will be auto injected -->/)) {
let str = '<!-- built files will be auto injected -->\n<script src="a.js"></script>\n<script src="b.js"></script>'
let data = content.replace('<!-- built files will be auto injected -->', str)
console.log('data', data)
// 写入文件
fs.writeFile(fileDir, data, 'utf-8', (err) => {
// 第二个参数 是被插入的内容
if (err) {
throw err;
}
})
}
}
if (isDir) {
console.log('----文件---')
// 如果文件里还是文件,则递归调用函数
readFile(fileDir)
}
})
});
});
};
readFile();
总结:
所用fs模块,api有
readdir、stat、readFileSync、writeFile
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。