automatically detect submodules

This commit is contained in:
nightwing 2018-03-16 17:22:03 +04:00
parent 7642b1fdfe
commit 5e5eae7cb9
8 changed files with 41 additions and 19 deletions

View File

@ -12,7 +12,12 @@ define(function(require, exports, module) {
var menus = imports.menus;
var emmetExt = require("ace/ext/emmet");
emmetExt.setCore("lib/emmet/emmet");
emmetExt.load = function(callback) {
require(["lib/emmet/emmet"], function(m) {
emmetExt.setCore(m);
callback && callback();
});
};
emmetExt.updateCommands = function() {};
/***** Initialization *****/

View File

@ -225,7 +225,7 @@ function main(options, imports, register) {
compress: compress,
filter: [],
ignore: [],
additional: compileForNode || [{
additional: compileForNode ? [] : [{
id: module,
noDeps: true
}],

View File

@ -11,6 +11,8 @@ define(function(require, exports, module) {
var path = require("path");
var mkdirp = require("mkdirp");
var async = require("async");
var moduleDeps = require("architect-build/module-deps");
var root = path.join(build.cacheDir, build.version);
@ -58,7 +60,7 @@ define(function(require, exports, module) {
sources: result.sources,
config: [],
}, skin, pathConfig, save(["skin", config, skin + ".css"], next));
})(err, result)
})(err, result);
}, function(configName, data) {
var pluginPaths = data.map(function(p) {
return typeof p == "string" ? p : p.packagePath;
@ -139,6 +141,22 @@ define(function(require, exports, module) {
nameParts[0] += "/" + options.compressOutputDirPrefix;
writeFile(nameParts, code, done);
}
if (result.sources) {
pending++;
async.forEach(result.sources, function(pkg, next) {
var deps = moduleDeps.getSubmodules(pkg.source, pkg.id);
if (pkg.submodules)
deps = deps.concat(pkg.submodules);
if (!deps.length)
return next();
async.forEach(deps, function(moduleName, next) {
console.log(moduleName, pkg.id);
build.buildModule(moduleName, pathConfig, save(["modules", moduleName + ".js"], next));
}, next);
}, done);
}
};
}

View File

@ -10,15 +10,15 @@
font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
padding: 60px 50px;
}
</style>
</style>
<script src="mini_require.js"></script>
<script src="/configs/require_config.js"></script>
<script src="lib/mocha/mocha.js"></script>
</head>
<body>
<div id="mocha"></div>
<div id='jserror' width='100%' height='20px' style='font: 10px \"courier new\"; color: red; display: none;'></div>
<script src="mini_require.js"></script>
<script src="/configs/require_config.js"></script>
<script src="lib/mocha/mocha.js"></script>
<script>
window.onerror=function(msg){ var el=document.getElementById('jserror'); el.innerHTML+="<div class='jserr'>"+msg+"</div>";};

View File

@ -370,7 +370,7 @@ exports.runEmmetCommand = function runEmmetCommand(editor) {
var result = actions.run(this.action, editorProxy);
} catch(e) {
if (!emmet) {
load(runEmmetCommand.bind(this, editor));
exports.load(runEmmetCommand.bind(this, editor));
return true;
}
editor._signal("changeStatus", typeof e == "string" ? e : e.message);
@ -429,11 +429,11 @@ var onChangeMode = function(e, target) {
if (e.enableEmmet === false)
enabled = false;
if (enabled)
load();
exports.load();
exports.updateCommands(editor, enabled);
};
var load = function(cb) {
exports.load = function(cb) {
if (typeof emmetPath == "string") {
require("ace/config").loadModule(emmetPath, function() {
emmetPath = null;

View File

@ -387,13 +387,15 @@ function rewriteDefines(sources, opts){
+ '");';
}
else if (pkg.id.indexOf("vfs!") > -1) {
pkg.source = 'define("' + pkg.id + '",[],' + function(require, exports,module) {
pkg.source = 'define("' + pkg.id + '",[],' + function(require, exports, module) {
var path = module.id.slice(4);
return {
srcUrl: requirejs.MODULE_LOAD_URL + "/~node/" + path,
path: path,
};
} + ');';
pkg.submodules = ["~node/" + pkg.id.slice(4).replace(/\.js$/, "")];
console.log(pkg.submodules)
}
else {
var deps = [];

View File

@ -227,7 +227,7 @@ var _require = function(parentId, moduleName, callback, errback) {
if (typeof callback == "function")
callback(module);
return module;
} else if (typeof importScripts != undefined) {
} else if (typeof importScripts != "undefined") {
addToLoadQueue([depName], [depName]);
return lookup(depName);
}

View File

@ -279,10 +279,11 @@ function getSubmodules(src, name) {
return [];
var deps = [];
m.forEach(function(dep) {
var re = /["']([^"']+?)["']/g;
var detectStaticPath = /["']([^"']+?)["']+(\s*\+[^,]+)?/g;
var m;
while ((m = re.exec(dep))) {
deps.push(normalizeModule(name, m[1]));
while ((m = detectStaticPath.exec(dep))) {
if (!m[2])
deps.push(normalizeModule(name, m[1]));
}
});
// console.log(deps);
@ -393,8 +394,6 @@ function wrapUMD(module) {
if (/define\(\s*\[[^\]]*\],\s*function\(/.test(firstDefineCall[0]))
return;
}
console.log("wrapping module " + module.id);
module.source = 'define(function(require, exports, module) {\n'
+ 'var $build_deps$ = {require: require, exports: exports, module: module};\n'
@ -428,8 +427,6 @@ function wrapCJS(module) {
if (!isCJS(module.source))
return;
console.log("wrapping module " + module.id);
module.source = 'define(function(require, exports, module) {\n'
+ module.source + '\n'