- 创建两个正则表达式,分别匹配 style 和 script 标签
- 使用 fs 模块,读取需要被处理的 html 文件
- 自定义 resolveCSS 方法,把 <style> 里的内容写入index.css 样式文件
- 自定义 resolveJS 方法,把 <script> 里的内容写入index.js脚本文件
- 自定义 resolveHTML 方法,替换掉style和script内容,写入index.html 样式文件
const fs = require('fs')
const path = require('path')
const regExpStyle = /<style>[\s\S]*<\/style>/
const regExpScript = /<script>[\s\S]*<\/script>/
fs.readFile(path.join(__dirname,'./index.html'),'utf8',(err,dataStr)=>{
if(err){
return console.log('读取文件失败:',err.message)
}
resolveCSS(dataStr)
resolveJS(dataStr)
resolveHTML(dataStr)
})
resolveCSS = (str)=>{
str = str.match(regExpStyle)[0]
str = str.replace('<style>','').replace('</style>','')
fs.writeFile(path.join(__dirname,'./index.css'),str,(err)=>{
if(err) return console.log('创建JS文件失败:',err.message)
console.log('CSS文件创建成功!')
})
}
resolveJS = (str)=>{
str = str.match(regExpScript)[0]
str = str.replace('<script>','').replace('</script>','')
fs.writeFile(path.join(__dirname,'./index.js'),str,(err)=>{
if(err) return console.log('创建JS文件失败:',err.message)
console.log('JS文件创建成功!')
})
}
resolveHTML = (dataStr) => {
let styleLink = "<link rel='stylesheet' href='./index.css' />",
scriptLink = "<script src='./index.js'></script>"
dataStr = dataStr.replace(regExpStyle,styleLink).replace(regExpScript,scriptLink)
fs.writeFile(path.join(__dirname,'./newIndex.html'),dataStr,(err)=>{
if(err) return console.log('创建新的HTML文件失败:',err.message)
console.log('HTML文件创建成功!')
})
}