diff --git a/lib/index.js b/lib/index.js index 4c699c5..0ebe6dd 100644 --- a/lib/index.js +++ b/lib/index.js @@ -27,6 +27,17 @@ function containsSlash(str){ return str.indexOf("/") >= 0 || str.indexOf("\\") >= 0; } +function transformNGModuleName (request) { + return request.replace(/^ng([A-Z])/, function (_, firstChar) { + return 'angular-' + firstChar.toLowerCase(); + }); +} + +function transformDepItem (dependency) { + dependency.string = transformNGModuleName(dependency.string); + return dependency; +} + // Try to resolve a file of the form /somepath/module/module // (calling it modmod for want of a better term) function resolveModModFile(resolver, request, callback){ @@ -105,7 +116,7 @@ AngularPlugin.prototype = { // - files containing multiple modules (shared prefix) // resolveModule: function(resolver, request, callback){ - if( containsSlash(request.request) ){ + if( containsSlash(request.request) || /^angular-/.test(request.request) ){ return callback(); } var split = request.request.split('.'); @@ -172,7 +183,7 @@ AngularPlugin.prototype = { var deps = parser.evaluateExpression(expr.arguments[1]); this._addModuleDefinition(parser, expr, mod); if( deps.items ){ - return deps.items.every( + return deps.items.map(transformDepItem).every( this._addDependency.bind(this, parser, expr)); } return this._addDependency(parser, expr, mod); @@ -184,7 +195,7 @@ AngularPlugin.prototype = { var mod = parser.evaluateExpression(expr.arguments[0]); var deps = parser.evaluateExpression(expr.arguments[1]); this._addModuleDefinition(parser, expr, mod); - return deps.items.every( + return deps.items.map(transformDepItem).every( this._addDependency.bind(this, parser, expr)); }, diff --git a/test/scenarios/basic-module-dependency-transform/in/angular-dependency.js b/test/scenarios/basic-module-dependency-transform/in/angular-dependency.js new file mode 100644 index 0000000..c4e8361 --- /dev/null +++ b/test/scenarios/basic-module-dependency-transform/in/angular-dependency.js @@ -0,0 +1,2 @@ + +angular.module('ngDependency', []); diff --git a/test/scenarios/basic-module-dependency-transform/in/main.js b/test/scenarios/basic-module-dependency-transform/in/main.js new file mode 100644 index 0000000..928b991 --- /dev/null +++ b/test/scenarios/basic-module-dependency-transform/in/main.js @@ -0,0 +1,2 @@ +// 1 dep +angular.module('myModule', ['ngDependency']); diff --git a/test/scenarios/basic-module-dependency-transform/out/bundle.js b/test/scenarios/basic-module-dependency-transform/out/bundle.js new file mode 100644 index 0000000..7a4f2a2 --- /dev/null +++ b/test/scenarios/basic-module-dependency-transform/out/bundle.js @@ -0,0 +1,33 @@ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + __webpack_require__(1); + /* WEBPACK VAR INJECTION */(function(angular) {// 1 dep + (module.exports['myModule'] = angular.module('myModule', ['ngDependency']) +); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(angular) { + (module.exports['ngDependency'] = angular.module('ngDependency', [])); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + + // stub for angular module + + + /*** EXPORTS FROM exports-loader ***/ + module.exports = window.angular + +/***/ } +/******/ ]) \ No newline at end of file diff --git a/test/scenarios/basic-module-dependency-transform/webpack.conf.js b/test/scenarios/basic-module-dependency-transform/webpack.conf.js new file mode 100644 index 0000000..1f984b4 --- /dev/null +++ b/test/scenarios/basic-module-dependency-transform/webpack.conf.js @@ -0,0 +1,5 @@ +var AngularPlugin = require('../../../lib'); +module.exports = { + entry: "main.js", + plugins: [new AngularPlugin()] +}; diff --git a/test/scenarios/basic-module-dependency/out/bundle.js b/test/scenarios/basic-module-dependency/out/bundle.js index 68efad8..4a1930b 100644 --- a/test/scenarios/basic-module-dependency/out/bundle.js +++ b/test/scenarios/basic-module-dependency/out/bundle.js @@ -1,20 +1,33 @@ -([ -function(module, exports, __webpack_require__) { - // 'dependency' - __webpack_require__(1); - - (function(angular) { - (module.exports['myModule'] = angular.module('myModule', ['dependency'])); - }.call(exports, __webpack_require__(2))) - -}, -function(module, exports, __webpack_require__) { - - (function(angular) { - (module.exports['dependency'] = angular.module('dependency', [])); - }.call(exports, __webpack_require__(2))) -}, -function(module, exports, __webpack_require__) { - // stub -} -]) +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + __webpack_require__(1); + /* WEBPACK VAR INJECTION */(function(angular) {// 1 dep + (module.exports['myModule'] = angular.module('myModule', ['dependency']) +); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(angular) { + (module.exports['dependency'] = angular.module('dependency', [])); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + + // stub for angular module + + + /*** EXPORTS FROM exports-loader ***/ + module.exports = window.angular + +/***/ } +/******/ ]) \ No newline at end of file diff --git a/test/scenarios/basic-module/out/bundle.js b/test/scenarios/basic-module/out/bundle.js index d685a27..960ba68 100644 --- a/test/scenarios/basic-module/out/bundle.js +++ b/test/scenarios/basic-module/out/bundle.js @@ -1,11 +1,22 @@ -([ - function(module, exports, __webpack_require__) { - - (function(angular) { - (module.exports['main'] = angular.module('main', [])); - }.call(exports, __webpack_require__(1))) -}, -function(module, exports, require) { - // angular.js stub -} -]) +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(angular) {// Simplest test + (module.exports['main'] = angular.module('main', [])); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1))) + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + + // stub for angular module + + + /*** EXPORTS FROM exports-loader ***/ + module.exports = window.angular + +/***/ } +/******/ ]) \ No newline at end of file