今天上班有個(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