[OE-core] [PATCH 1/7] create_npm.py: add devDependencies to depends
Paul Eggleton
paul.eggleton at linux.intel.com
Thu Mar 2 01:44:11 UTC 2017
Hi Anders,
On Thursday, 2 March 2017 6:19:55 AM NZDT Anders Darander wrote:
> Web applications built using e.g. angular2, usually requires that the
> packages in devDependencies are available.
>
> Signed-off-by: Anders Darander <anders at chargestorm.se>
> ---
> scripts/lib/recipetool/create_npm.py | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/lib/recipetool/create_npm.py
> b/scripts/lib/recipetool/create_npm.py index 3ba6de0..11b2950 100644
> --- a/scripts/lib/recipetool/create_npm.py
> +++ b/scripts/lib/recipetool/create_npm.py
> @@ -83,7 +83,7 @@ class NpmRecipeHandler(RecipeHandler):
> extravalues['extrafiles']['lockdown.json'] = tmpfile
> lines_before.append('NPM_LOCKDOWN :=
> "${THISDIR}/${PN}/lockdown.json"')
>
> - def _handle_dependencies(self, d, deps, optdeps, lines_before,
> srctree): + def _handle_dependencies(self, d, deps, optdeps, devdeps,
> lines_before, srctree): import scriptutils
> # If this isn't a single module we need to get the dependencies
> # and add them to SRC_URI
> @@ -97,6 +97,10 @@ class NpmRecipeHandler(RecipeHandler):
> depdata = self.get_npm_data(dep, depver, d)
> if self.check_npm_optional_dependency(depdata):
> deplist[dep] = depdata
> + for dep, depver in devdeps.items():
> + depdata = self.get_npm_data(dep, depver, d)
> + if self.check_npm_optional_dependency(depdata):
> + deplist[dep] = depdata
> for dep, depver in deps.items():
> depdata = self.get_npm_data(dep, depver, d)
> deplist[dep] = depdata
> @@ -179,8 +183,8 @@ class NpmRecipeHandler(RecipeHandler):
> if 'homepage' in data:
> extravalues['HOMEPAGE'] = data['homepage']
>
> - deps, optdeps = self.get_npm_package_dependencies(data)
> - updated = self._handle_dependencies(tinfoil.config_data,
> deps, optdeps, lines_before, srctree) + deps, optdeps,
> devdeps = self.get_npm_package_dependencies(data) + updated
> = self._handle_dependencies(tinfoil.config_data, deps, optdeps, devdeps,
> lines_before, srctree) if updated:
> # We need to redo the license stuff
> self._replace_license_vars(srctree, lines_before,
> handled, extravalues, tinfoil.config_data) @@ -277,15 +281,20 @@ class
> NpmRecipeHandler(RecipeHandler):
> def get_npm_package_dependencies(self, pdata):
> dependencies = pdata.get('dependencies', {})
> optionalDependencies = pdata.get('optionalDependencies', {})
> + devDependencies = pdata.get('devDependencies', {})
> dependencies.update(optionalDependencies)
> + dependencies.update(devDependencies)
> depsfound = {}
> optdepsfound = {}
> + devdepsfound = {}
> for dep in dependencies:
> if dep in optionalDependencies:
> optdepsfound[dep] = dependencies[dep]
> + elif dep in devDependencies:
> + devdepsfound[dep] = dependencies[dep]
> else:
> depsfound[dep] = dependencies[dep]
> - return depsfound, optdepsfound
> + return depsfound, optdepsfound, devdepsfound
>
> # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py
> # (split out from _getdependencies())
This worries me slightly - I've no familiarity with angular2 but AIUI in
general the dev dependencies most often aren't needed, and may be onerous to
pull in and build - should we really be pulling those in unconditionally?
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list