代码拉取完成,页面将自动刷新
var fs = require('fs') ;
var path = require('path') ;
//@note 获取文件夹下的所有文件 , 若url为文件或者路径不存在 , 直接返回
//@return { url : true||false||{ url : true||false||... } } 类似于如此的递归结构
var getFiles = function(url){
if(!fs.existsSync(url)){
console.log('不存在路径:'+url) ;
return false;
}
var state = fs.statSync( url ) ;
var flag = {} ;
var isJsFile = function(url){
return /(.js)$/.test(url) ;
} ;
if( state.isFile() ){
if( isJsFile(url) ){
flag[url + ''] = true ;
}else{
flag[url + ''] = false ;
}
return flag ;
}else if( state.isDirectory() ){
var files = fs.readdirSync(url) ;
var obj = {} ;
for(var i = 0 ; i < files.length ; i++ ){
var wholeUrl = url + '//' + files[i] ;
var wholeState = fs.statSync( wholeUrl ) ;
if( wholeState.isFile() ){
if( isJsFile(wholeUrl) ){
obj[ wholeUrl ] = true ;
}else{
obj[ wholeUrl ] = false ;
}
}
if( wholeState.isDirectory() ){
obj[ wholeUrl ] = getFiles( wholeUrl ) ;
}
}
flag[url + ''] = obj ;
return flag ;
}else{
return false ;
}
} ;
//@note 将getFiles获取的对象转化为只包含js文件的数组
var getJsFiles = function(obj){
var list = [] ;
(function getUrlInObj(obj){
for(var i in obj ){
if( obj[i] === true ){
list.push(path.normalize(i)) ;
}
if( typeof(obj[i]) === 'object' ){
getUrlInObj(obj[i]) ;
}
}
}(obj)) ;
return list ;
} ;
var Scan = function(option){
if( option === undefined ){
option = {} ;
}
this.url = option.url ;
} ;
Scan.prototype.setBaseUrl = function(url){
this.url = url ;
} ;
Scan.prototype.getBaseUrl = function(){
return this.url ;
} ;
Scan.prototype.start = function(){
if(!this.url){
console.log('请定义扫描器的路径') ;
return ;
}
return getJsFiles( getFiles(this.url) || {} ) ;
} ;
module.exports = Scan ;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。