From e437fa7f95b7f521d7c70c647c1f2a690ae1a4a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steve=20=28Egest=C3=A9=29=20Regester?= Date: Thu, 26 Dec 2013 16:53:49 -0800 Subject: [PATCH 1/2] Add support for package interface --- .gitignore | 6 +++-- src/template-jasmine-requirejs.js | 38 +++++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 670c2d7..04e324f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ -node_modules -npm-debug.log *.iml .idea .grunt + +/node_modules +/npm-debug.log +/_SpecRunner.html \ No newline at end of file diff --git a/src/template-jasmine-requirejs.js b/src/template-jasmine-requirejs.js index 1b0cc94..0f05faa 100644 --- a/src/template-jasmine-requirejs.js +++ b/src/template-jasmine-requirejs.js @@ -42,6 +42,15 @@ function resolvePath(filepath) { return path.resolve(filepath); } +function resolvePackageRoot(baseUrl, pkg) { + var root = baseUrl + path.sep; + if (pkg.location) { + root += pkg.location + path.sep; + } + root += pkg.main ? pkg.main : 'main'; + return path.normalize(root); +} + function moveRequireJs(grunt, task, versionOrPath) { var pathToRequireJS, versionReg = /^(\d\.?)*$/; @@ -94,10 +103,29 @@ exports.process = function(grunt, task, context) { } // Remove baseUrl and .js from src files - var baseUrl = (context.options.requireConfig && context.options.requireConfig.baseUrl || '/'); - context.scripts.src.forEach(function(script, i){ - script = script.replace(new RegExp('^' + baseUrl + "/?"),""); - context.scripts.src[i] = script.replace(/\.js$/,""); + var module = false; + var baseUrl = path.normalize(context.options.requireConfig && context.options.requireConfig.baseUrl || path.sep); + + var packages = context.options.requireConfig.packages || []; + packages.forEach(function (pkg) { + var root = resolvePackageRoot(baseUrl, pkg); + var rootPath = path.dirname(root); + if (rootPath === baseUrl) { + module = pkg; + } + }); + + var prefix = module ? module.name : ''; + var main = module ? resolvePackageRoot(baseUrl, module) : false; + context.scripts.src.forEach(function(script, i) { + script = path.normalize(script); + script = script.replace(/\.js$/,""); + if (script === main) { + script = module.name; + } else { + script = script.replace(new RegExp('^' + baseUrl + path.sep + "?"), prefix); + } + context.scripts.src[i] = script; }); // Prepend loaderPlugins to the appropriate files @@ -111,7 +139,7 @@ exports.process = function(grunt, task, context) { }); } - moveRequireJs(grunt, task, version); + moveRequireJs(grunt, task, version); context.serializeRequireConfig = function(requireConfig) { var funcCounter = 0; From 236ff93a3fa9e85529a27b2c38c6562f0620ca63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steve=20=28Egest=C3=A9=29=20Regester?= Date: Mon, 10 Feb 2014 15:12:41 -0800 Subject: [PATCH 2/2] Append / to module prefix --- src/template-jasmine-requirejs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/template-jasmine-requirejs.js b/src/template-jasmine-requirejs.js index 0f05faa..604fc67 100644 --- a/src/template-jasmine-requirejs.js +++ b/src/template-jasmine-requirejs.js @@ -115,7 +115,7 @@ exports.process = function(grunt, task, context) { } }); - var prefix = module ? module.name : ''; + var prefix = module ? (module.name + '/') : ''; var main = module ? resolvePackageRoot(baseUrl, module) : false; context.scripts.src.forEach(function(script, i) { script = path.normalize(script);