Browse Source

监听文件区分

lilinsen 5 years ago
parent
commit
e9810f142d
2 changed files with 97 additions and 34 deletions
  1. 1 1
      package.json
  2. 96 33
      scripts/mdToVue.js

+ 1 - 1
package.json

@@ -137,7 +137,7 @@
         "vue": "^2.6.10",
         "vue": "^2.6.10",
         "vue-i18n": "8.1.0",
         "vue-i18n": "8.1.0",
         "vue-jest": "2.6.0",
         "vue-jest": "2.6.0",
-        "vue-lazyload": "1.3.3",
+        "vue-lazyload": "^1.3.3",
         "vue-loader": "15.4.0",
         "vue-loader": "15.4.0",
         "vue-router": "^3.0.2",
         "vue-router": "^3.0.2",
         "vue-style-loader": "^4.1.2",
         "vue-style-loader": "^4.1.2",

+ 96 - 33
scripts/mdToVue.js

@@ -6,6 +6,7 @@ let { version } = require("../package.json");
 let marked = require('marked');
 let marked = require('marked');
 let contrast = require('./contrast');
 let contrast = require('./contrast');
 let rimraf = require("rimraf");
 let rimraf = require("rimraf");
+let Chokidar = require('chokidar');
 if (!marked) {
 if (!marked) {
     console.log('you need npm i marked -D!');
     console.log('you need npm i marked -D!');
 }
 }
@@ -33,6 +34,7 @@ class mdVue{
                 _that.needHandleFiles = res;
                 _that.needHandleFiles = res;
                 _that.ishasOutFile(_that.options.output).then(res=>{
                 _that.ishasOutFile(_that.options.output).then(res=>{
                     _that.star();
                     _that.star();
+                      _that.filelisten()
                 });  
                 });  
             })  
             })  
         })
         })
@@ -59,6 +61,37 @@ class mdVue{
         
         
     }
     }
     apply(){} 
     apply(){} 
+    filelisten(){
+        let _that = this;
+        let watcher = Chokidar.watch(_that.options.entry,{
+            persistent: true,
+            usePolling: true,
+        });
+        let log = console.dir.bind(console);
+        let watchAction = function({event, eventPath}){      
+            // 这里进行文件更改后的操作
+            // fileReadStar(eventPath,(res)=>{           
+            //     createdFile(param.output + res.mdName + '.vue', res.html, param.needCode)
+            // })
+            console.log(path.join(__dirname,JSON.stringify(eventPath)))
+            if(/\.md$/.test(eventPath)){
+                _that.vueDesWrite(eventPath)
+            }            
+            // "d:\workplace\nutui\docs\international.md"
+            // _that.read(eventPath).then(res=>{
+            //     _that.headHandle();
+            //     _that.markHandle();
+            //     let html = _that.marked(res);                                
+            //     _that.write({
+            //         outsrc:_that.options.output,
+            //         name:fileName + '.vue',
+            //         html:html
+            //     });
+            // }) 
+        }
+        watcher.on('change', path => watchAction({event: 'change', eventPath: path}))
+        .on('unlink', path => watchAction({event: 'remove', eventPath: path}));
+    }
     star(){  
     star(){  
         let _that = this;        
         let _that = this;        
         hashElement(_that.options.entry, {
         hashElement(_that.options.entry, {
@@ -68,43 +101,73 @@ class mdVue{
         }).then(hash => {        
         }).then(hash => {        
 
 
             nodeFilelist.read([_that.options.entry],{"ext":'md'}, res => {                  
             nodeFilelist.read([_that.options.entry],{"ext":'md'}, res => {                  
-                res.map((item,index) =>{
-                    if(index == 30){
-                        debugger
-                    }
-                    let fileSplits = item.path.split(path.sep);
-                    let fileName = fileSplits.pop();
-                    if(_that.isDoc(fileName)){
-                            fileName = fileSplits.pop();
-                    }else{
-                        fileName = fileName.replace(/\.md/,'');
-                    }
-                    if(_that.needHandleFiles[fileName]){                   
-                        // _that.read(item.path).then(res=>{
-                        //     _that.headHandle();
-                        //     _that.markHandle();
-                        //     let html = _that.marked(res);                                
-                        //     _that.write({
-                        //         outsrc:_that.options.output,
-                        //         name:fileName + '.vue',
-                        //         html:html
-                        //     });
-                        // })
-                    }
-                    _that.read(item.path).then(res=>{
-                        _that.headHandle();
-                        _that.markHandle();
-                        let html = _that.marked(res);                                
-                        _that.write({
-                            outsrc:_that.options.output,
-                            name:fileName + '.vue',
-                            html:html
-                        });
-                    })               
+                res.map((item,index) =>{   
+                    _that.vueDesWrite(item.path)             
+                    // let fileSplits = item.path.split(path.sep);
+                    // let fileName = fileSplits.pop();
+                    // if(_that.isDoc(fileName)){
+                    //         fileName = fileSplits.pop();
+                    // }else{
+                    //     fileName = fileName.replace(/\.md/,'');
+                    // }
+                    // if(_that.needHandleFiles[fileName]){                   
+                    //     // _that.read(item.path).then(res=>{
+                    //     //     _that.headHandle();
+                    //     //     _that.markHandle();
+                    //     //     let html = _that.marked(res);                                
+                    //     //     _that.write({
+                    //     //         outsrc:_that.options.output,
+                    //     //         name:fileName + '.vue',
+                    //     //         html:html
+                    //     //     });
+                    //     // })
+                    // }
+                    // _that.read(item.path).then(res=>{
+                    //     _that.headHandle();
+                    //     _that.markHandle();
+                    //     let html = _that.marked(res);                                
+                    //     _that.write({
+                    //         outsrc:_that.options.output,
+                    //         name:fileName + '.vue',
+                    //         html:html
+                    //     });
+                    // })               
                 });
                 });
             });
             });
         })
         })
     }
     }
+    vueDesWrite(getpath){
+        let _that = this;
+        let fileSplits = getpath.split(path.sep);
+        let fileName = fileSplits.pop();
+        if(_that.isDoc(fileName)){
+                fileName = fileSplits.pop();
+        }else{
+            fileName = fileName.replace(/\.md/,'');
+        }
+        if(_that.needHandleFiles[fileName]){                   
+            // _that.read(item.path).then(res=>{
+            //     _that.headHandle();
+            //     _that.markHandle();
+            //     let html = _that.marked(res);                                
+            //     _that.write({
+            //         outsrc:_that.options.output,
+            //         name:fileName + '.vue',
+            //         html:html
+            //     });
+            // })
+        }
+        _that.read(getpath).then(res=>{
+            _that.headHandle();
+            _that.markHandle();
+            let html = _that.marked(res);                                
+            _that.write({
+                outsrc:_that.options.output,
+                name:fileName + '.vue',
+                html:html
+            });
+        })
+    }
     isDoc(name){
     isDoc(name){
         return (name == "doc.md") ? true : false;
         return (name == "doc.md") ? true : false;
     }
     }