Skip to content

Commit 1e6d148

Browse files
committed
fix: add dynamic import to tracing deps if possible
1 parent b30b71b commit 1e6d148

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

src/transformers/name-amd-define.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const amdRequireDepFinder = astMatcher.depFinder(
1616
'requirejs(__any, [__deps])',
1717
'requirejs(__any, [__deps], __any)'
1818
);
19+
// import() has been translated to imp0r_() in cjs-to-amd.js
20+
const dynamicDepFinder = astMatcher.depFinder('imp0r_(__dep)');
1921

2022
// transform an anonymous amd define() into named define.
2123
// find deps.
@@ -28,6 +30,12 @@ export default function(unit) {
2830
}
2931
});
3032

33+
dynamicDepFinder(unit.contents).forEach(d => {
34+
if (result.deps.indexOf(d) === -1) {
35+
result.deps.push(d);
36+
}
37+
});
38+
3139
result.deps = result.deps.filter(d => {
3240
// remove cjs constants
3341
if (d === 'require' || d === 'exports' || d === 'module') return false;

test/transformers/name-amd-define.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,8 @@ test('nameDefine get requirejs deps', t => {
559559
});
560560

561561
test('nameDefine fills up module name', t => {
562-
const cjs = "define(['require','exports','module','./a'],function(){});";
563-
const cjsExpected = "define('cjs',['require','exports','module','./a'],function(){});";
562+
const cjs = "define(['require','exports','module','./a'],function(require, exports, module){var imp0r_ = function(d){return requirejs([requirejs.resolveModuleId(module.id,d)]).then(function(r){return r[0]&&r[0].default?r[0].default:r;});}; imp0r_('hello');});";
563+
const cjsExpected = "define('cjs',['require','exports','module','./a'],function(require, exports, module){var imp0r_ = function(d){return requirejs([requirejs.resolveModuleId(module.id,d)]).then(function(r){return r[0]&&r[0].default?r[0].default:r;});}; imp0r_('hello');});";
564564

565565
const unit = {
566566
contents: cjs,
@@ -570,7 +570,7 @@ test('nameDefine fills up module name', t => {
570570
const r = nameDefine(unit);
571571
t.deepEqual(r.defined, ['cjs']);
572572
t.notOk(r.shimed);
573-
t.deepEqual(r.deps, ['./a']);
573+
t.deepEqual(r.deps, ['./a', 'hello']);
574574
t.equal(r.contents, cjsExpected);
575575
t.end();
576576
});

0 commit comments

Comments
 (0)