From 72ad57aea9bb210dac4433d72160a23947f20705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominykas=20Blyz=CC=8Ce=CC=87?= Date: Tue, 29 Jan 2019 15:46:33 +0200 Subject: [PATCH] feat: log skipped modules Closes #2 --- README.md | 4 ++-- lib/index.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 58b9fc2..a3bd9d5 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ In `package.json`: ``` "allowScripts": { - "fsevents": "*", - "node-sass": "*" + "fsevents": "*", # allow install scripts in all versions + "node-sass": false # ignore install scripts } ``` diff --git a/lib/index.js b/lib/index.js index 04c1b80..4407f65 100644 --- a/lib/index.js +++ b/lib/index.js @@ -11,10 +11,10 @@ const internals = {}; internals.scan = (tree, parent, map = new Map(), scanned = new Set()) => { - for (const [k, v] of tree.dependencies) { + for (const [, v] of tree.dependencies) { if (v.hasCycle()) { - console.warn(`Cycle in ${k} - skipping`); + console.warn(`==========> skip ${v.path()} (because it has a cycle in dependencies)`); continue; } @@ -69,13 +69,18 @@ exports.run = (cmd = 'install') => { return childPkg.scripts && (childPkg.scripts[cmd] || childPkg.scripts[`pre${cmd}`] || childPkg.scripts[`post${childPkg}`]); }) - .filter(([,childPkg]) => { + .filter(([path, childPkg]) => { const name = childPkg.name; + if (allowed[name] === undefined) { throw new Error(`No entry for ${name}`); } + if (!allowed[name]) { + console.warn(`==========> skip ${path} (because it is not allowed in package.json)`); + } + return allowed[name]; }) .forEach(([path, childPkg]) => {