1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | module.exports = (option)=>{
|
11 | const {fs,path,pathInfo,isData,isSprite,getFileInfo} = {
|
12 | fs:require('fs-extra'),
|
13 | path:require('path'),
|
14 | pathInfo:require('./getPathInfo'),
|
15 | isData:require('./isData'),
|
16 | isSprite:require('./isSprite'),
|
17 | getFileInfo:require('./getFileInfo')
|
18 | };
|
19 |
|
20 | let config = {
|
21 | srcDir:option.srcDir,
|
22 | ignoreDir:option.ignoreDir ? [...option.ignoreDir] : ['node_modules'],
|
23 | ignore_:option.ignore_ === undefined ? true : option.ignore_
|
24 | };
|
25 |
|
26 |
|
27 | let oFiles = {
|
28 | '.pug':{},
|
29 | '.jade':{},
|
30 | '.ts':{},
|
31 | '.tsx':{},
|
32 | '.jsx':{},
|
33 | '.js':{},
|
34 | '.png':{},
|
35 | '.svg':{},
|
36 | '_sprite':{},
|
37 | '.scss':{},
|
38 | '.sass':{}
|
39 | },
|
40 | eachDir,
|
41 |
|
42 |
|
43 | isIgnoreDir = (filePath)=>{
|
44 | return config.ignoreDir.some((item,index)=>{
|
45 |
|
46 | return filePath.indexOf(path.sep + item + path.sep) > -1;
|
47 | });
|
48 | },
|
49 | isIgnoreFile = (fileName)=>{
|
50 | return ['.DS_Store'].some((item)=>{
|
51 | return item === fileName;
|
52 | });
|
53 | };
|
54 |
|
55 | (eachDir = (dir)=>{
|
56 |
|
57 | let isDir = pathInfo(dir).type === 'dir';
|
58 | if(isDir){
|
59 | let files = fs.readdirSync(dir);
|
60 |
|
61 | files.forEach((item,index)=>{
|
62 | let filePath = path.join(dir,item),
|
63 | itemInfo = pathInfo(filePath),
|
64 | isNotIgnore = !isIgnoreDir(filePath);
|
65 |
|
66 | if(itemInfo.type === 'dir' && isNotIgnore){
|
67 | eachDir(filePath)
|
68 | }else if(itemInfo.type === 'file' && isNotIgnore && !isIgnoreFile(itemInfo.name)){
|
69 |
|
70 |
|
71 | let _isSprite = isSprite(filePath),
|
72 | _isData = isData(filePath);
|
73 | if(_isSprite){
|
74 | oFiles['_sprite'][path.dirname(filePath)] = null;
|
75 | }else if(!_isData){
|
76 |
|
77 | let fileInfo = getFileInfo(filePath);
|
78 |
|
79 |
|
80 | if(config.ignore_){
|
81 |
|
82 | if(oFiles[itemInfo.extension] === undefined && !fileInfo.isPublic){
|
83 | oFiles[itemInfo.extension] = {};
|
84 | };
|
85 |
|
86 | if(!fileInfo.isPublic){
|
87 | oFiles[itemInfo.extension][filePath] = null;
|
88 | };
|
89 | }
|
90 |
|
91 | else{
|
92 | if(oFiles[itemInfo.extension] === undefined){
|
93 | oFiles[itemInfo.extension] = {};
|
94 | };
|
95 | oFiles[itemInfo.extension][filePath] = null;
|
96 | };
|
97 | };
|
98 | };
|
99 | });
|
100 | };
|
101 | })(config.srcDir);
|
102 |
|
103 |
|
104 |
|
105 | return oFiles;
|
106 |
|
107 | }; |
\ | No newline at end of file |