Skip to content

Commit

Permalink
Do not ignore explicit node_modules in package paths (#799)
Browse files Browse the repository at this point in the history
Fixes #792
  • Loading branch information
evocateur committed May 1, 2017
1 parent bb7cbf3 commit 7b72210
Show file tree
Hide file tree
Showing 21 changed files with 136 additions and 3 deletions.
18 changes: 15 additions & 3 deletions src/PackageUtilities.js
Expand Up @@ -51,12 +51,24 @@ export default class PackageUtilities {
cwd: rootPath,
strict: true,
absolute: true,
ignore: [
};

const hasNodeModules = packageConfigs.some((cfg) => cfg.indexOf("node_modules") > -1);
const hasGlobStar = packageConfigs.some((cfg) => cfg.indexOf("**") > -1);

if (hasGlobStar) {
if (hasNodeModules) {
const message = "An explicit node_modules package path does not allow globstars (**)";
log.error("EPKGCONFIG", message);
throw new Error(message);
}

globOpts.ignore = [
// allow globs like "packages/**",
// but avoid picking up node_modules/**/package.json
"**/node_modules/**",
],
};
];
}

packageConfigs.forEach((globPath) => {
glob.sync(path.join(globPath, "package.json"), globOpts)
Expand Down
22 changes: 22 additions & 0 deletions test/PackageUtilities.js
Expand Up @@ -40,6 +40,28 @@ describe("PackageUtilities", () => {
"package-5",
]);
});

it("does not ignore explicit node_modules in packages config", async () => {
const testDir = await initFixture("PackageUtilities/explicit-node-modules");
const result = PackageUtilities.getPackages(new Repository(testDir));
expect(result.map((pkg) => pkg.name)).toEqual([
"alle-pattern-monorepo",
"package-1",
"package-2",
"package-3",
"package-4",
"@scoped/package-5",
]);
});

it("throws an error when globstars and explicit node_modules configs are mixed", async () => {
const testDir = await initFixture("PackageUtilities/mixed-globstar");
try {
PackageUtilities.getPackages(new Repository(testDir));
} catch (err) {
expect(err.message).toMatch("An explicit node_modules package path does not allow globstars");
}
});
});

describe(".filterPackages()", () => {
Expand Down
@@ -0,0 +1,9 @@
{
"lerna": "__TEST_VERSION__",
"packages": [
"./",
"packages/node_modules/*",
"packages/node_modules/@scoped/*"
],
"version": "1.0.0"
}
Empty file.
11 changes: 11 additions & 0 deletions test/fixtures/PackageUtilities/explicit-node-modules/package.json
@@ -0,0 +1,11 @@
{
"name": "alle-pattern-monorepo",
"dependencies": {
"package-3": "^1.0.0",
"package-4": "^1.0.0"
},
"devDependencies": {
"lerna": "__TEST_VERSION__",
"@scoped/package-5": "^1.0.0"
}
}

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

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

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

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

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

8 changes: 8 additions & 0 deletions test/fixtures/PackageUtilities/mixed-globstar/lerna.json
@@ -0,0 +1,8 @@
{
"lerna": "__TEST_VERSION__",
"packages": [
"src/**",
"packages/node_modules/*"
],
"version": "1.0.0"
}
7 changes: 7 additions & 0 deletions test/fixtures/PackageUtilities/mixed-globstar/package.json
@@ -0,0 +1,7 @@
{
"name": "mixed-globstar-monorepo",
"private": true,
"devDependencies": {
"lerna": "__TEST_VERSION__"
}
}

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

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

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

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

Empty file.
@@ -0,0 +1,7 @@
{
"name": "package-5",
"version": "1.0.0",
"dependencies": {
"package-2": "^1.0.0"
}
}

0 comments on commit 7b72210

Please sign in to comment.