deps-install
Advanced tools
Comparing version
25
index.js
'use strict'; | ||
const fs = require('fs'); | ||
const { resolve, join } = require('path'); | ||
const { resolve, join, basename, dirname } = require('path'); | ||
const cp = require('child_process'); | ||
@@ -27,3 +27,5 @@ const { promisify } = require('util'); | ||
const readVersions = async (root, filterer) => { | ||
const AT = '@'; | ||
const readVersions = async (root, filterer, namespaces) => { | ||
const moduleRoot = join(root, 'node_modules'); | ||
@@ -33,6 +35,8 @@ const entries = await readdirp.promise(moduleRoot, { | ||
directoryFilter(entry) { | ||
const dirName = entry.path.replace(moduleRoot, ''); | ||
return filterer.has(dirName); | ||
if (entry.path.startsWith(AT) && entry.basename.startsWith(AT)) { | ||
return namespaces.has(entry.basename); | ||
} | ||
return filterer.has(entry.path); | ||
}, | ||
depth: 1 | ||
depth: 2 | ||
}); | ||
@@ -57,7 +61,14 @@ | ||
} | ||
const filterer = new Set(Object.keys(deps)); | ||
const filterer = new Set(); | ||
const namespaces = new Set(); | ||
Object.keys(deps).forEach(dep => { | ||
if (dep.startsWith(AT)) { | ||
namespaces.add(dirname(dep)); | ||
} | ||
filterer.add(dep); | ||
}); | ||
if (Object.keys(deps).length === 0) { | ||
return []; | ||
} | ||
const installed = await readVersions(root, filterer); | ||
const installed = await readVersions(root, filterer, namespaces); | ||
const needUpdate = Object.keys(deps).filter(name => { | ||
@@ -64,0 +75,0 @@ if (!installed.hasOwnProperty(name)) return true; |
{ | ||
"name": "deps-install", | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"description": "Check if node_modules match package.json versions. npm / yarn install shortcut.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
6298
4.74%125
8.7%