From f8ba6b94ec06a00843f0600fdb551fa29a853f0c Mon Sep 17 00:00:00 2001 From: Dimitar Tachev Date: Wed, 7 Feb 2018 18:58:30 +0200 Subject: [PATCH] fix: stop creating hooks on `npm i` in plugin folders. --- index.js | 27 ++++++++++++++++++++------- package.json | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index c8f6183..8878ee1 100644 --- a/index.js +++ b/index.js @@ -24,29 +24,42 @@ function generateHookName(pkg, hook) { } function findProjectDir(pkgdir) { - if (process.env.INIT_CWD) { + if (process.env.INIT_CWD && _isNativeScriptAppRoot(process.env.INIT_CWD)) { return process.env.INIT_CWD; } var candidateDir = pkgdir; + var oldCandidateDir = null; while (true) { - var oldCandidateDir = candidateDir; candidateDir = path.dirname(candidateDir); + if (oldCandidateDir === candidateDir) { + return; + } + if (path.basename(candidateDir) === 'node_modules') { continue; } - var packageJsonFile = path.join(candidateDir, 'package.json'); - if (fs.existsSync(packageJsonFile)) { + + if (_isNativeScriptAppRoot(candidateDir)) { return candidateDir; } - if (oldCandidateDir === candidateDir) { - return; - } + oldCandidateDir = candidateDir; } } +function _isNativeScriptAppRoot(dir) { + var isNativeScriptAppRoot = false; + var packageJsonFile = path.join(dir, 'package.json'); + if (fs.existsSync(packageJsonFile)) { + var packageJsonContent = require(packageJsonFile); + isNativeScriptAppRoot = !!packageJsonContent.nativescript && !!packageJsonContent.nativescript.id; + } + + return isNativeScriptAppRoot; +} + function forEachHook(pkgdir, callback) { var pkg = require(path.join(pkgdir, 'package.json')); var ns = pkg.nativescript; diff --git a/package.json b/package.json index e963c53..1bcbf68 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nativescript-hook", - "version": "0.2.2", + "version": "0.2.3", "description": "Helper module for installing hooks into NativeScript projects", "main": "index.js", "scripts": {