From: BELOUARGA Mohamed <m.beloua...@technologyandstrategy.com>

Adapt the npm classe for the shrinkwrap of Nodejs 18, and seperate
dependencies and dev dependencies.

Signed-off-by: BELOUARGA Mohamed <m.beloua...@technologyandstrategy.com>
---
 meta/classes-recipe/npm.bbclass | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/meta/classes-recipe/npm.bbclass b/meta/classes-recipe/npm.bbclass
index c1944ca14e..91da3295f2 100644
--- a/meta/classes-recipe/npm.bbclass
+++ b/meta/classes-recipe/npm.bbclass
@@ -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
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#181966): 
https://lists.openembedded.org/g/openembedded-core/message/181966
Mute This Topic: https://lists.openembedded.org/mt/99230564/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to