generator-hcj
Version:
HTML/CSS/JavaScript前端开发工作流,适用于互联网金融事业部开发环境
112 lines (91 loc) • 2.87 kB
JavaScript
let util = require('./util.js');
let fs = require('fs');
class Babel{
constructor(isSingle){
this.isSingle = isSingle;
this.task = {
babel: {
options: {
presets: ['babel-preset-es2015', 'babel-polyfill'],
compact: false
}
}
};
this.init();
}
init(){
let me = this;
let distJs = util.getDist('mobile').scripts+'/common';
let srcJs = util.getSrc('mobile').scripts+'/common';
let srcRoot = this.scanFolder(srcJs).files;
this.task.babel['common'] = {
files: {}
};
srcRoot.map(function(o, i) {
let filename = o.replace(new RegExp(srcJs + '\/(.*)', 'g'), '$1');
if(/\.js$/.test(filename) && filename.indexOf('fastclick.js') === -1){
let name = '.tmpjs/' + distJs + '/' + filename;
let file = fs.readFileSync(srcJs + '/' + filename, 'utf-8');
if(/['"]use\sstrict['"]/g.test(file)){
me.task.babel['common'].files[name] = name;
}
}
});
}
setProject(path){
let me = this;
let srcJs = path.srcJs;
let distJs = path.distJs;
let srcRoot = this.scanFolder(srcJs).files;
let page = path.page;
let project = path.project;
this.task.babel[project + '-' + page] = {
files: {}
};
srcRoot.map(function(o, i) {
let filename = o.replace(new RegExp(srcJs + '\/(.*)', 'g'), '$1');
if(/\.js$/.test(filename)){
let name = '.tmpjs/' + distJs + '/' + filename;
let file = fs.readFileSync(srcJs + '/' + filename, 'utf-8');
if(/['"]use\sstrict['"]/g.test(file)){
me.task.babel[project + '-' + page].files[name] = name;
}
}
})
}
/**
* [深层扫描文件]
* @param {[String]} path [扫描的目录]
*/
scanFolder(path){
var fileList = [];
var folderList = [];
var result;
var walk = function(path, fileList, folderList){
var files = fs.readdirSync(path);
files.forEach(function(item) {
var tmpPath = path + '/' + item;
var stats = fs.statSync(tmpPath);
var canAdd = true;
if(!canAdd){
return;
}
if (stats.isDirectory()) {
walk(tmpPath, fileList, folderList);
folderList.push(tmpPath);
} else {
fileList.push(tmpPath);
var fileName = tmpPath.replace(/.*\/(.*)$/g, '$1');
}
});
};
walk(path, fileList, folderList);
result = {
'files': fileList,
'folders': folderList
};
return result;
}
}
module.exports = Babel;