Files
Chamilo/plugin/mindmap/edit-mindmap/build/lib/combine.js
2025-08-14 22:39:38 +02:00

75 lines
1.7 KiB
JavaScript

var path = require('path'),
fs = require('fs');
var //项目名
prefix,
//依赖关系
dep,
//项目路径
jsDir;
var sort = function(src) {
if(!dep) {
console.log('Please call combine.init method first!');
return;
}
var scripts = [],
visited = {},
visit = function(node) {
if(node in visited) {
return;
}
visited[node] = true;
var requires = dep.getRequiresByPath(node);
for(var require in requires) {
visit( dep.getPathByName(require) );
}
scripts.push(node);
};
visit(src);
return scripts;
};
var deleteRequire = function(code) {
var reg = prefix + '\\.require\\([\'\"]([-_\\.a-zA-Z0-9]+)[\'\"]\\);[\n\r]*';
reg = new RegExp(reg, 'g');
return code.replace(reg, '');
};
exports.init = function(dependency, config) {
dep = dependency;
jsDir = config.getJsDir();
prefix = config.getProjectName();
};
exports.combineCode = function(src) {
if(!src) {
console.log('Please input a file');
return;
}
src = path.relative(jsDir, src).replace(/\\/g, '/');
var scripts = sort(src), code = [];
for(var i = 0, l = scripts.length; i < l; i++) {
src = path.join(jsDir, scripts[i]);
var content = fs.readFileSync(src).toString();
code.push( deleteRequire(content) );
}
return code.join('\n\n');
};
exports.combineFile = function(src, output) {
var content = exports.combineCode(src);
fs.writeFileSync(output, content);
console.log('success! -> Combined File : ' + src);
};
exports.combine = function() {};