使用node文件讀取模塊批量修改文件名

今天上班有個(gè)需求,就是需要吧css文件下的所有樣式名全部加上時(shí)間戳,用來避免線上瀏覽器的緩存。文件少還好,可以一個(gè)個(gè)改,要是文件多怎么辦,這時(shí)候就用到node里面的文件模塊。

主要用到fs.rename 和fs.readdir這兩個(gè),新建changeName.js文件

const fs = require("fs")

const filePath = './dist/css/' // 打包完成的樣式文件路徑

fs.readdir(filePath, (err, files) => {

  files.forEach(fileName => { if (fileName === 'app.css') { return }

  let oldPath = filePath + fileName

  let timestamp = Date.parse(new Date()) // 得到時(shí)間戳

  // 獲取 .css 以前的文件名 修改名字加上時(shí)間戳 
  let newName = fileName.replace(/(.*\/)*([^.]+).*/ig, "$2") + '_' +   timestamp + '.css' 

  fs.rename(oldPath, newPath, err => {
    if (!err) {
     console.log(fileName + '文件名修改成功!')
    } else {
    console.log(err) }
    })
   })
 })

其實(shí)很簡(jiǎn)單,通過fs.readdir獲取到filePath路徑下面的所有文件名,得到一個(gè)數(shù)組。遍歷循環(huán)這個(gè)數(shù)組,拿到每個(gè)文件的名稱,用正則截取.css后綴之前的文件命,添加上時(shí)間戳。然后再通過fs.rename將新的路徑覆蓋到當(dāng)前的路徑文件,就可以。

模塊說明:

fs.readdir(path[, options], callback)

// 讀取目錄的內(nèi)容。 回調(diào)有兩個(gè)參數(shù) (err, files) 其中 files 是目錄中的文件名的數(shù)組(不包括 '.' 和 '..')。

//可選的 options 參數(shù)可以是指定編碼的字符串,也可以是具有 encoding 屬性的對(duì)象,該屬性指定用于傳給回調(diào)的文件名的字符編碼。

fs.rename(oldPath, newPath, callback)

//將 oldPath 上的文件重命名為 newPath 提供的路徑名。 如果 newPath 已存在,則覆蓋它。 


更多文章訪問個(gè)人博客:http://www.lfanliu.top

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容