diff --git a/README.md b/README.md
index 7eb459489b00da833d97f0f8e1406fe069bdc87c..44d69e270d0124ec76d0bd10a69ea3b18016c921 100644
--- a/README.md
+++ b/README.md
@@ -12,9 +12,13 @@
进入所在项目,全局搜索==.scss==。找到引用的==.scss==文件
4. 转scss文件为css
-在src文件夹中放入需要转化scss的项目,执行==npm run dev==,命令完成后,css文件会出现在对应scss所在目录
+== 清空src文件夹的内容 ==,在src文件夹中放入需要转化scss的项目。执行==npm run dev==,命令完成后,css文件会出现在对应scss所在目录
5. 修改scss引入
进入第三步引用scss的文件,修改==.scss==后缀为==.css==
-注:非vue项目,没有入口文件。因scss变量间的相互使用,在转化时可能会报错。修改文件此过程最后有前端协助处理,否则容易改错内容
\ No newline at end of file
+6. 修改其他文件中包含的lang="scss"
+修改html,vue,htmv等其他文件中包含的lang="scss"。执行node htmv,js 会直接替换文件中的scss,转化成css
+
+注:非vue项目,没有入口文件。因scss变量间的相互使用,在转化时可能会报错。修改文件此过程最好有前端协助处理,否则容易改错内容
+
diff --git a/file.js b/file.js
deleted file mode 100644
index b6aecbbfafa2c3e8916707c4dcdb3854bdbb8c22..0000000000000000000000000000000000000000
--- a/file.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * 读取一个目录中所有子目录和文件
- */
- const fs = require('fs')
- const path = require('path')
-
- class File {
- constructor(filename, name, ext, isFile, size, creeateTime, updateTime) {
- this.filename = filename
- this.name = name // 文件名
- this.ext = ext // 后缀
- this.isFile = isFile // 是否文件
- this.size = size // 文件大小
- this.creeateTime = creeateTime // 创建时间
- this.updateTime = updateTime // 更新时间
- }
-
- static async getFile(filename) {
- const stat = await fs.promises.stat(filename)
- const { size, birthtime, mtime } = stat
- let name = path.basename(filename),
- ext = path.extname(filename),
- isFile = stat.isFile(),
- creeateTime = new Date(birthtime),
- updateTime = new Date(mtime);
- return new File(filename, name, ext, isFile, size, creeateTime, updateTime)
- }
-
- // 获取目录的所有子文件对象,如果是文件返回空数组
- async getChildren() {
- if (this.isFile) { return [] }
- let dirArr = await fs.promises.readdir(this.filename);
- dirArr = dirArr.map(fileName => {
- const filename = path.resolve(this.filename, fileName)
- return File.getFile(filename)
- })
- return Promise.all(dirArr)
- }
-
- // 获取文件内容, 如果是目录,返回null
- async getContent(isBuffer = false) {
- if (!this.isFile) { return null }
- if (isBuffer) {
- return await fs.promises.readFile(this.filename)
- }
- return await fs.promises.readFile(this.filename, 'utf-8')
- }
- }
-
- async function readDir(dirname) {
- const file = await File.getFile(dirname)
- return await file.getChildren()
- }
-
- const dirname = path.resolve(__dirname, '../src')
- console.log(readDir(dirname))
-
- async function test() {
- const dirname = path.resolve(__dirname, '../src')
- const filename = path.resolve(__dirname, './index.js')
-
- const dir = await File.getFile(dirname)
- console.log('dir', await dir.getChildren())
-
- const file = await File.getFile(filename)
- console.log('file', file)
-
- }
- test()
-
-
\ No newline at end of file
diff --git a/htmv.js b/htmv.js
new file mode 100644
index 0000000000000000000000000000000000000000..9965b1bcdbf89c2ad3362b32c27ea2e9cc3d2fa5
--- /dev/null
+++ b/htmv.js
@@ -0,0 +1,65 @@
+const glob = require('glob');
+const path = require('path');
+const fs = require('fs');
+const cheerio = require('cheerio');
+const sass = require('sass');
+
+const args = process.argv.slice(2);
+
+let partten = "**/*.htmv";
+if (args[1]) {
+ partten = args[1];
+}
+let dirPath = args[0] || './src';
+
+/**
+ *
+ * @param {String} dirPath
+ * @param {String} partten
+ */
+function dealVueStyleNode(dirPath, partten) {
+ const files = glob.globSync(partten, { cwd: dirPath });
+ files.forEach(file => dealVueStyleNodeSingleFile(path.resolve(dirPath, file)));
+}
+
+function dealVueStyleNodeSingleFile(file) {
+ const html = fs.readFileSync(file, 'utf-8');
+
+ // 使用 cheerio 加载 HTML 文档
+ // 第三个参数表示不加载到document中
+ const $ = cheerio.load(html, {
+ lowerCaseTags: false,
+ xmlMode: true,
+ normalizeWhitespace: false,
+ decodeEntities: false,
+ }, false);
+
+ // 修改 HTML 文档中的内容
+ $('style').each((index, styleEl) => {
+ styleEl = $(styleEl);
+ const lang = styleEl.attr('lang');
+ if (!lang || lang == 'scss') {
+ const scssString = styleEl.text();
+ try {
+ const result = parseScss(scssString, file);
+ styleEl.text(result.css);
+ console.log(`file: ${file} style-node: ${index} deal style success.`);
+ } catch (e) {
+ console.warn(`file: ${file} style-node: ${index} deal style error.`, e);
+ }
+ styleEl.attr('lang', 'css');
+ }
+ })
+ if ($('style').length) {
+ fs.writeFileSync(file, $.html());
+ }
+ // // 将修改后的 HTML 文档写入文件
+ // fs.writeFileSync('index.html', $.html());
+}
+
+function parseScss(scssString, file) {
+ const result = sass.compileString(scssString, { url: file });
+ return result;
+}
+
+dealVueStyleNode(dirPath, partten);
diff --git a/package.json b/package.json
index 2e71061a4ee99b179f8b4df5515f0c8881f117e7..168aa017c1d6d08a0013412d45b473c4ad7b7cb2 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,9 @@
"license": "ISC",
"dependencies": {
"webpack-fix-style-only-entries": "^0.6.1",
- "webpack-glob-entry": "^2.1.1"
+ "webpack-glob-entry": "^2.1.1",
+ "cheerio": "^1.0.0-rc.12",
+ "glob": "^9.0.2",
+ "sass": "^1.58.3"
}
}
diff --git a/readFileCall.js b/readFileCall.js
deleted file mode 100644
index ead20b5a0769033781b1cdcf922ac90907bff0c2..0000000000000000000000000000000000000000
--- a/readFileCall.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 读取一个目录中所有子目录和文件
- */
- const fs = require('fs')
- const path = require('path')
-
-var fileArr = []
-
-var acceptFile = ['scss']
-
-var getFile = function(pathStr,cb){
- fs.readdir(pathStr,function(err,dirArr){
- console.log(dirArr);
-
- dirArr.forEach(e => {
- //文件夹
- let str = pathStr+'/'+e
- if(!isFile(str)){
- getChildernFile(str)
- }else{
- let fileType = str.split('.')[str.split('.').length-1]
- if(acceptFile.indexOf(fileType)!==-1){
- fileArr.push({
- outputPath:pathStr+'/',
- inputPath:str
- })
- }
- }
- });
-
- cb?cb():''
- });
- }
-
- var getChildernFile = function(pathStr){
- fs.readdir(pathStr,function(err,dirArr){
- console.log(dirArr);
-
- dirArr.forEach(e => {
- //文件夹
- let str = pathStr+'/'+e
- if(!isFile(str)){
- getFile(str)
- }else{
- let fileType = str.split('.')[str.split('.').length-1]
- if(acceptFile.indexOf(fileType)!==-1){
- fileArr.push({
- outputPath:pathStr+'/',
- inputPath:str
- })
- }
- }
- });
- });
- }
-
-
- var isFile = function(filename){
- var stat = fs.lstatSync(filename);
- var isFile = stat.isFile()
- return isFile
-}
-
-module.exports = {
- getFile,
- fileArr,
-}
-
-
-getFile('./src',function(){
- console.log(fileArr);
-})
-
-// setTimeout(()=>{
-// console.log(fileArr);
-// },5000)
\ No newline at end of file
diff --git a/src/aa/bb/check-ukey-for-login.htmv b/src/aa/bb/check-ukey-for-login.htmv
new file mode 100644
index 0000000000000000000000000000000000000000..1babb78b75aaec13b6a38907d9bfc6cd822052f2
--- /dev/null
+++ b/src/aa/bb/check-ukey-for-login.htmv
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+
+
diff --git a/src/aa/check-ukey-for-login.htmv b/src/aa/check-ukey-for-login.htmv
new file mode 100644
index 0000000000000000000000000000000000000000..1babb78b75aaec13b6a38907d9bfc6cd822052f2
--- /dev/null
+++ b/src/aa/check-ukey-for-login.htmv
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+
+
diff --git a/src/check-ukey-for-login.htmv b/src/check-ukey-for-login.htmv
new file mode 100644
index 0000000000000000000000000000000000000000..1babb78b75aaec13b6a38907d9bfc6cd822052f2
--- /dev/null
+++ b/src/check-ukey-for-login.htmv
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+
+