fs.readdir(dir, function(err, files) {});讀取一個文件夾,dir:文件夾名,callback參數files:返回dir下全部的文件名
fs.statSync(path).isDirectory();判斷一個目錄是否問一個文件夾css
const fs = require('fs');
stylus -w styl -o css
將styl文件夾的.styl文件編譯到css文件夾下node
具體實現的代碼shell
const fs = require('fs') const { exec } = require('child_process') // 建立子進程的方法 // 其中最原始的建立方法是spawn,exec,execFile,fork都是對spawan不一樣程度的封裝 // exec的實現原理是啓動了一個系統shell來解析參數,通俗解釋,用cmd來運行一段命令?它還有一個回調函數 function readFile(dir, callback) { callback(dir); fs.readdir(dir, (err, files) => { if (files && files.length) { files.forEach(file => { var arr = file.split('.'); arr.pop(); var path = dir + '/' + file; if (fs.statSync(path).isDirectory()) { readFile(path, callback); } }) } }) } readFile('styl', function(dir) { var ls = exec(`stylus -w ${dir.replace('styl', './styl')} -o ${dir.replace('styl', './css')}`, (err, stdout, stderr) => { if (err) { console.log(`error: ${err}`); } }) ls.stdout.on("data", (data) => { console.log(`stdout: ${data}`); }) ls.stderr.on("data", (data) => { console.log(`stderr: ${data}`); }) ls.on("close", (code) => { console.log(`子進程退出: ${code}`); }) })