From 9cdceaa3ba22df715a8d92229dd170c4a5643939 Mon Sep 17 00:00:00 2001 From: Kirby Wu Date: Tue, 10 Nov 2020 10:53:20 +0800 Subject: [PATCH] fix bug: sometimes package.json just doesnt have _id field ( such as modules with npm link ). in this case, we use name + version to mimic one. --- cli.js | 7 ++++--- lib/main.ls | 5 +++-- package-lock.json | 2 +- package.json | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cli.js b/cli.js index 49dc0d2..edbb100 100755 --- a/cli.js +++ b/cli.js @@ -10,16 +10,17 @@ fed = import$({ modules: [] }, JSON.parse(fs.readFileSync("package.json").toString()).frontendDependencies || {}); (fed.modules || []).map(function(obj){ - var root, info, ref$, i$, name, version, desdir, maindir, b, srcdir; + var root, info, id, ref$, i$, name, version, desdir, maindir, b, srcdir; obj = typeof obj === 'string' ? { name: obj } : obj; root = path.join("node_modules", obj.name); info = JSON.parse(fs.readFileSync(path.join(root, "package.json")).toString()); - if (/\.\.|^\//.exec(info._id)) { + id = info._id || info.name + "@" + info.version; + if (/\.\.|^\//.exec(id)) { throw new Error("fedep: not supported name in module " + obj.name + "."); } - ref$ = info._id.split("@"), name = 0 < (i$ = ref$.length - 1) ? slice$.call(ref$, 0, i$) : (i$ = 0, []), version = ref$[i$]; + ref$ = id.split("@"), name = 0 < (i$ = ref$.length - 1) ? slice$.call(ref$, 0, i$) : (i$ = 0, []), version = ref$[i$]; name = name.join('@'); desdir = path.join(fed.root, name, version); maindir = path.join(fed.root, name, "main"); diff --git a/lib/main.ls b/lib/main.ls index 26f4e3d..ac5b25f 100644 --- a/lib/main.ls +++ b/lib/main.ls @@ -7,8 +7,9 @@ fed = {root: '.', modules: []} <<< (JSON.parse(fs.read-file-sync "package.json" obj = if typeof(obj) == \string => {name: obj} else obj root = path.join("node_modules", obj.name) info = JSON.parse(fs.read-file-sync path.join(root, "package.json") .toString!) - if /\.\.|^\//.exec(info._id) => throw new Error("fedep: not supported name in module #{obj.name}.") - [...name,version] = info._id.split("@") + id = info._id or "#{info.name}@#{info.version}" + if /\.\.|^\//.exec(id) => throw new Error("fedep: not supported name in module #{obj.name}.") + [...name,version] = id.split("@") name = name.join \@ desdir = path.join(fed.root, name, version) maindir = path.join(fed.root, name, "main") diff --git a/package-lock.json b/package-lock.json index 1218dec..ee239d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fedep", - "version": "0.0.3", + "version": "0.0.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b9ecd16..63c5630 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "fedep", "license": "MIT", "description": "Frontend dependency installer", - "version": "0.0.4", + "version": "0.0.5", "homepage": "https://github.com/plotdb/fedep", "repository": { "type": "git",