Skip to content

Commit

Permalink
Allow resolution for array configs (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
diervo committed Feb 2, 2018
1 parent f10d033 commit ccbd126
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 28 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ describe('resolve-lwc-npm-modules', () => {

const lwcModules = lwcResolver.resolveLwcNpmModules(resolverOptions);
const lwcModuleNames = Object.keys(lwcModules);
expect(lwcModuleNames).toHaveLength(3);
expect(lwcModuleNames).toContain('alias-fake-package', 'fake-module1', 'fake-module2');
expect(lwcModuleNames).toHaveLength(4);
expect(lwcModuleNames).toContain('alias-fake-package', 'fake-module1', 'fake-module2', 'other-resource');
})
});
52 changes: 27 additions & 25 deletions packages/lwc-module-resolver/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,33 @@ function expandModuleDirectories({ moduleDirectories, rootDir } = {}) {
return nodeModulePaths(rootDir || __dirname, { moduleDirectory: moduleDirectories });
}

function resolveModules(modules, opts) {
if (Array.isArray(modules)) {
modules.forEach((modulePath) => resolveModules(modulePath, opts));
} else {
const { mappings, visited, moduleRoot, lwcConfig } = opts;
if (typeof modules === 'string') {
const packageEntries = resolveModulesInDir(path.join(moduleRoot, modules), lwcConfig);
Object.keys(packageEntries).forEach((moduleName) => {
if (!hasModuleBeenVisited(moduleName, visited)) {
mappings[moduleName] = packageEntries[moduleName];
visited.add(moduleName);
}
});
} else {
Object.keys(modules).forEach((moduleName) => {
if (!hasModuleBeenVisited(moduleName, visited)) {
const modulePath = path.join(moduleRoot, modules[moduleName]);
mappings[moduleName] = { moduleSpecifier: moduleName, entry: modulePath };
visited.add(moduleName);
}
});
}
}
}

function resolveLwcNpmModules(options = {}) {
const VISITED = new Set();
const visited = new Set();
const modulePaths = expandModuleDirectories(options);

return modulePaths.reduce((m, nodeModulesDir) => {
Expand All @@ -100,30 +125,7 @@ function resolveLwcNpmModules(options = {}) {
const lwcConfig = loadLwcConfig(moduleRoot);

if (lwcConfig) {
let { modules } = lwcConfig;
if (typeof modules === 'string') {
modules = [modules];
}

if (Array.isArray(modules)) {
modules.forEach((modulePath) => {
const packageEntries = resolveModulesInDir(path.join(moduleRoot, modulePath), lwcConfig);
Object.keys(packageEntries).forEach((moduleName) => {
if (!hasModuleBeenVisited(moduleName, VISITED)) {
mappings[moduleName] = packageEntries[moduleName];
VISITED.add(moduleName);
}
});
});
} else {
Object.keys(modules).forEach((moduleName) => {
if (!hasModuleBeenVisited(moduleName, VISITED)) {
const modulePath = path.join(moduleRoot, modules[moduleName]);
mappings[moduleName] = { moduleSpecifier: moduleName, entry: modulePath };
VISITED.add(moduleName);
}
});
}
resolveModules(lwcConfig.modules, {mappings, visited, moduleRoot, lwcConfig });
}

return mappings;
Expand Down

0 comments on commit ccbd126

Please sign in to comment.