From 7208b06dacf6d07f7e3883224c279a22d4cc7d90 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Thu, 23 Jun 2016 23:16:27 +0200 Subject: [PATCH 1/2] Support react-native plugins --- src/findPlugins.js | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/src/findPlugins.js b/src/findPlugins.js index 58d3855..fce51c4 100644 --- a/src/findPlugins.js +++ b/src/findPlugins.js @@ -9,13 +9,29 @@ const flatten = require('lodash').flatten; * @param {String} dependency Name of the dependency * @return {Boolean} If dependency is a rnpm plugin */ -const isPlugin = (dependency) => !!~dependency.indexOf('rnpm-plugin-'); +const isRNPMPlugin = (dependency) => !!~dependency.indexOf('rnpm-plugin-') +const isReactNativePlugin = (dependency) => !!~dependency.indexOf('react-native-'); -const findPluginInFolder = (folder) => { - var pjson; +const readPackage = (folder) => { try { - pjson = require(path.join(folder, 'package.json')); + return require(path.join(folder, 'package.json')); } catch (e) { + return null; + } +}; + +const findPluginsInReactNativePackage = (pjson) => { + if (!pjson.rnpm || !pjson.rnpm.commands) { + return []; + } + + return path.join(pjson.name, pjson.rnpm.commands); +}; + +const findPluginInFolder = (folder) => { + const pjson = readPackage(folder); + + if (!pjson) { return []; } @@ -24,7 +40,22 @@ const findPluginInFolder = (folder) => { Object.keys(pjson.devDependencies || {}) ); - return deps.filter(isPlugin); + return deps.reduce( + (acc, pkg) => { + if (isRNPMPlugin(pkg)) { + return acc.concat(pkg); + } + if (isReactNativePlugin(pkg)) { + const pjson = readPackage(path.join(folder, 'node_modules', pkg)); + if (!pjson) { + return acc; + } + return acc.concat(findPluginsInReactNativePackage(pjson)); + } + return acc; + }, + [] + ); }; /** From e8a40b9a17e38adb154a6d3eff35b2d4dc783668 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 24 Jun 2016 15:19:09 +0200 Subject: [PATCH 2/2] Remove misleading name --- src/findPlugins.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/findPlugins.js b/src/findPlugins.js index fce51c4..8cb8818 100644 --- a/src/findPlugins.js +++ b/src/findPlugins.js @@ -9,7 +9,7 @@ const flatten = require('lodash').flatten; * @param {String} dependency Name of the dependency * @return {Boolean} If dependency is a rnpm plugin */ -const isRNPMPlugin = (dependency) => !!~dependency.indexOf('rnpm-plugin-') +const isRNPMPlugin = (dependency) => !!~dependency.indexOf('rnpm-plugin-'); const isReactNativePlugin = (dependency) => !!~dependency.indexOf('react-native-'); const readPackage = (folder) => { @@ -21,11 +21,11 @@ const readPackage = (folder) => { }; const findPluginsInReactNativePackage = (pjson) => { - if (!pjson.rnpm || !pjson.rnpm.commands) { + if (!pjson.rnpm || !pjson.rnpm.plugin) { return []; } - return path.join(pjson.name, pjson.rnpm.commands); + return path.join(pjson.name, pjson.rnpm.plugin); }; const findPluginInFolder = (folder) => {