现在有这么个需求,你做的某个项目的代码需要放到一个 pdf 文件中,当然可以一个个文件打开去复制到pdf文件中,但是随着前端工程化的演变,往往一个项目有几百个文件,那么这个工程量是巨大且乏味的。而作为一个技术人员,通过自动化的方式去优化任务是必须要掌握的技能。下面代码会通过 nodejs 来达到需求目的。
使用步骤
- 将需要转pdf的代码路径替换到代码目标路径中
- 配置文件夹中需要复制代码后缀名称
- 在vscode中打开右键 Run Code (需要安装node)
- 运行完成打开result.txt
- 顶部菜单栏选择文件->导出为pdf即可
node 代码
const path = require('path')
const fs = require('fs')
// 需要赋值代码所在文件夹目标路径 /Users/project/
const basePath = '代码目标路径';
// 文件夹中需要复制代码后缀名称
const fileSuffix = ['.json', '.less', '.html', '.ts'];
// 遍历目录下所有需要的文件
function mapDir(dir, callback, finish) {
fs.readdir(dir, function(err, files) {
if (err) {
console.error(err)
return
}
files.forEach((filename, index) => {
let pathname = path.join(dir, filename)
// 读取文件信息
fs.stat(pathname, (err, stats) => {
if (err) {
console.log('获取文件stats失败')
return
}
if (stats.isDirectory()) {
mapDir(pathname, callback, finish)
} else if (stats.isFile()) {
if (fileSuffix.includes(path.extname(pathname))&&!['.spec'].includes(path.extname(pathname))&&pathname.indexOf('node_modules')===-1) {
// 排除 目录下的 json less 文件
fs.readFile(pathname, (err, data) => {
console.log(pathname);
if (err) {
console.error(err)
return
}
callback && callback(data)
})
}else {
return
}
}
})
if (index === files.length - 1) {
finish && finish()
}
})
})
}
// 执行
mapDir(
basePath,
function(file) {
// 读取文件后将文件内容写入 result.txt
fs.appendFile(__dirname+'/result.txt', file, 'utf8', function(err){
if(err) throw err;
// console.log('write JSON into TEXT');
});
},
function() {
// console.log('xxx文件目录遍历完了')
}
)
2022-09-08 06:27