typescript 实现保存文件自动编译

在当前项目目录下创建一个文件compile.js

然后node compile.js 

在然后就没有然后了。


var fs = require('fs')  
    , path = require('path')  
    , cp = require('child_process')  
    , beforePath= ''  
    ;  
  
function listen(dir)  
{  
    fs.readdirSync(dir).forEach(function(filename)  
    {  
        var stat= fs.statSync(path.join(dir, filename));  
  
        if( stat.isDirectory() )  
            listen(path.join(dir, filename));  
    });  
  
    fs.watch(dir, function (event, filename)  
    {  
        if( filename )  
        {  
            if( event==='rename' && filename.lastIndexOf('.ts') >= 0 )  
            {  
                var stat= fs.statSync(path.join(dir, filename));  
  
                if( stat.isDirectory() )  
                    return;  
                
                if( beforePath !== path.join(dir, filename) && filename.lastIndexOf('.ts') > -1 )  
                {  
                    beforePath= path.join(dir, filename);  
  
                    cp.exec('tsc --module amd '+ path.join(dir, filename), function(err)
                    {
                        if( err )
                            console.log(err)  
                        else
                            console.log(filename, 'ok')
                        beforePath= '';  
                    });  
                }  
            }  
            else  
            {  
                setTimeout(function()  
                {
                    if(filename.lastIndexOf('.ts') <= 0)
                        return;  

                    var stat= fs.statSync(path.join(dir, filename));  
  
                    if( stat.isDirectory() )  
                        listen(path.join(dir, filename));  
                }, 100);  
            }  
        }  
    });  
}  
  
listen(__dirname);  


你可能感兴趣的:(JavaScript)