]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
classe-recipes: npm: Add support for dependencies and devDependencies
authorBELOUARGA Mohamed <m.belouarga@technologyandstrategy.com>
Tue, 30 May 2023 22:27:52 +0000 (00:27 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 29 Jun 2023 10:07:51 +0000 (11:07 +0100)
Adapt the npm classe for the shrinkwrap of Nodejs 18, and seperate
dependencies and dev dependencies.

Signed-off-by: BELOUARGA Mohamed <m.belouarga@technologyandstrategy.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
meta/classes-recipe/npm.bbclass

index c1944ca14e1323ef8cca51ecaee30ecff99ec8f6..91da3295f2f5d7ba23a179ce8e676b8567cbbf3e 100644 (file)
@@ -153,7 +153,11 @@ python npm_do_configure() {
 
     if has_shrinkwrap_file:
        cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap)
-       cached_shrinkwrap.pop("dependencies", None)
+       for package in orig_shrinkwrap["packages"]:
+            if package != "":
+                cached_shrinkwrap["packages"].pop(package, None)
+       cached_shrinkwrap["packages"][""].pop("dependencies", None)
+       cached_shrinkwrap["packages"][""].pop("devDependencies", None)
        cached_shrinkwrap["packages"][""].pop("peerDependencies", None)
 
     # Manage the dependencies
@@ -177,9 +181,16 @@ python npm_do_configure() {
             dep["integrity"] = _npm_integrity(tarball)
             if params.get("dev", False):
                 dep["dev"] = True
-            if "dependencies" not in cached_shrinkwrap:
-                cached_shrinkwrap["dependencies"] = {}
-            cached_shrinkwrap["dependencies"][name] = dep
+                if "devDependencies" not in cached_shrinkwrap["packages"][""]:
+                    cached_shrinkwrap["packages"][""]["devDependencies"] = {}
+                cached_shrinkwrap["packages"][""]["devDependencies"][name] = pkg['version']
+
+            else:
+                if "dependencies" not in cached_shrinkwrap["packages"][""]:
+                    cached_shrinkwrap["packages"][""]["dependencies"] = {}
+                cached_shrinkwrap["packages"][""]["dependencies"][name] = pkg['version']
+
+            cached_shrinkwrap["packages"][destsuffix] = dep
             # Display progress
             nonlocal progress_done
             progress_done += 1
@@ -212,7 +223,7 @@ python npm_do_configure() {
     # Configure the cached manifest file and cached shrinkwrap file
     def _update_manifest(depkey):
         for name in orig_manifest.get(depkey, {}):
-            version = cached_shrinkwrap["dependencies"][name]["version"]
+            version = cached_shrinkwrap["packages"][""][depkey][name]
             if depkey not in cached_manifest:
                 cached_manifest[depkey] = {}
             cached_manifest[depkey][name] = version