diff --git a/CHANGELOG.md b/CHANGELOG.md index 5444f97..f5553d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 0.0.12 + + - fix bug: browserify.bundle is asynchronous thus we need wait before we make `main` folder. + - upgrade LiveScript version to 1.6.0. + + # 0.0.11 - take care of name/version that contains `@` or `/` characters. diff --git a/cli.js b/cli.js index 0192667..adee548 100755 --- a/cli.js +++ b/cli.js @@ -1,5 +1,5 @@ #!/usr/bin/env node -// Generated by LiveScript 1.3.1 +// Generated by LiveScript 1.6.0 var fs, path, fsExtra, browserify, yargs, argv, useSymlink, fed, slice$ = [].slice; fs = require('fs'); path = require('path'); @@ -19,7 +19,7 @@ fed = import$({ modules: [] }, JSON.parse(fs.readFileSync("package.json").toString()).frontendDependencies || {}); (fed.modules || []).map(function(obj){ - var root, info, id, ref$, i$, name, version, ret, that, desdir, maindir, b, srcdir; + var root, info, id, ref$, i$, name, version, ret, that, desdir, maindir, p, srcdir; obj = typeof obj === 'string' ? { name: obj } : obj; @@ -46,10 +46,19 @@ fed = import$({ fsExtra.removeSync(desdir); fsExtra.ensureDirSync(desdir); if (obj.browserify) { - b = browserify(typeof obj.browserify === 'object' ? obj.browserify : void 8); - b.require(obj.name); - b.bundle().pipe(fs.createWriteStream(path.join(desdir, name + ".js"))); - console.log(" -- (module -> browserify) -> " + desdir + " "); + p = new Promise(function(res, rej){ + var b; + b = browserify(typeof obj.browserify === 'object' ? obj.browserify : void 8); + b.require(obj.name); + return b.bundle(function(e, buf){ + if (e) { + return rej(new Error(e)); + } + fs.writeFileSync(path.join(desdir, name + ".js"), buf); + console.log(" -- (module -> browserify) -> " + desdir + " "); + return res(); + }); + }); } else { if (obj.dir) { srcdir = path.join(root, obj.dir); @@ -60,14 +69,18 @@ fed = import$({ } } fsExtra.copySync(srcdir, desdir); - console.log(" -- " + srcdir + " -> " + desdir + " "); - } - fsExtra.removeSync(maindir); - if (useSymlink) { - return fsExtra.ensureSymlinkSync(desdir, maindir); - } else { - return fsExtra.copySync(desdir, maindir); + p = Promise.resolve().then(function(){ + return console.log(" -- " + srcdir + " -> " + desdir + " "); + }); } + return p.then(function(){ + fsExtra.removeSync(maindir); + if (useSymlink) { + return fsExtra.ensureSymlinkSync(desdir, maindir); + } else { + return fsExtra.copySync(desdir, maindir); + } + }); }); function import$(obj, src){ var own = {}.hasOwnProperty; diff --git a/lib/main.ls b/lib/main.ls index 7f4aa86..63c48bc 100644 --- a/lib/main.ls +++ b/lib/main.ls @@ -40,17 +40,22 @@ fed = {root: '.', modules: []} <<< (JSON.parse(fs.read-file-sync "package.json" fs-extra.remove-sync desdir fs-extra.ensure-dir-sync desdir if obj.browserify => - b = browserify(if typeof(obj.browserify) == \object => obj.browserify) - b.require(obj.name) - b.bundle!pipe fs.createWriteStream(path.join(desdir, "#name.js")) - console.log " -- (module -> browserify) -> #desdir " + p = new Promise (res, rej) -> + b = browserify(if typeof(obj.browserify) == \object => obj.browserify) + b.require(obj.name) + b.bundle (e, buf) -> + if e => return rej new Error(e) + fs.write-file-sync path.join(desdir, "#name.js"), buf + console.log " -- (module -> browserify) -> #desdir " + res! else if obj.dir => srcdir = path.join(root, obj.dir) else srcdir = path.join(root, "dist") if !fs.exists-sync(srcdir) => srcdir = root fs-extra.copy-sync srcdir, desdir - console.log " -- #srcdir -> #desdir " - fs-extra.remove-sync maindir - if use-symlink => fs-extra.ensure-symlink-sync desdir, maindir - else fs-extra.copy-sync desdir, maindir + p = Promise.resolve!then -> console.log " -- #srcdir -> #desdir " + p.then -> + fs-extra.remove-sync maindir + if use-symlink => fs-extra.ensure-symlink-sync desdir, maindir + else fs-extra.copy-sync desdir, maindir diff --git a/package-lock.json b/package-lock.json index ab1db0f..82b95fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fedep", - "version": "0.0.11", + "version": "0.0.12", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -13,16 +13,6 @@ "through": ">=2.2.7 <3" } }, - "LiveScript": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/LiveScript/-/LiveScript-1.3.1.tgz", - "integrity": "sha1-kBlsSFP+SaPGGCsF5PK69ZjmhW8=", - "dev": true, - "requires": { - "optionator": "~0.4.0", - "prelude-ls": "~1.1.1" - } - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -631,12 +621,6 @@ "safe-buffer": "^5.1.1" } }, - "fast-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", - "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=", - "dev": true - }, "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", @@ -902,14 +886,54 @@ "stream-splicer": "^2.0.0" } }, - "levn": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", - "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", + "livescript": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/livescript/-/livescript-1.6.0.tgz", + "integrity": "sha512-x5q+sx1/rOPmx6Fp04gjUqRr4XL5djqXPctu6FPBktm7d7gfRrKkYj9PhMeKT8OKE1bfL92njzAwaN8JCj8kRQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.0", - "type-check": "~0.3.1" + "optionator": "~0.8.2", + "prelude-ls": "~1.1.2", + "source-map": "=0.6.1", + "source-map-support": "=0.5.6" + }, + "dependencies": { + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "lodash.memoize": { @@ -1048,20 +1072,6 @@ "wrappy": "1" } }, - "optionator": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.4.0.tgz", - "integrity": "sha1-55x5Jv99VQ+SxxTfw9oh14d+vqY=", - "dev": true, - "requires": { - "deep-is": "~0.1.2", - "fast-levenshtein": "~1.0.0", - "levn": "~0.2.5", - "prelude-ls": "~1.1.0", - "type-check": "~0.3.1", - "wordwrap": "~0.0.2" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -1294,6 +1304,24 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -1573,10 +1601,10 @@ "is-typed-array": "^1.1.3" } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index 552493f..da41b1b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "cli.js" ], "description": "Frontend dependency installer", - "version": "0.0.11", + "version": "0.0.12", "homepage": "https://github.com/plotdb/fedep", "repository": { "type": "git", @@ -22,7 +22,7 @@ "yargs": "^16.1.0" }, "devDependencies": { - "LiveScript": ">=1.2.0" + "livescript": "^1.6.0" }, "bin": { "fedep": "./cli.js"