From ac063c437a3db437dfa85e882ee2a4da8583c20c Mon Sep 17 00:00:00 2001 From: Lachlan Collins Date: Mon, 25 Mar 2013 14:06:16 +1000 Subject: [PATCH] updated package.json with minify.js deps, added minify.js --- build/minify.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 14 ++++++----- 2 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 build/minify.js diff --git a/build/minify.js b/build/minify.js new file mode 100644 index 000000000..9732e4a8a --- /dev/null +++ b/build/minify.js @@ -0,0 +1,65 @@ +var cleanCSS = require('clean-css'); +var UglifyJS = require("uglify-js"); +var glob = require('glob'); +var fs = require('fs'); +var natcompare = require('./natcompare.js'); + +var packages = Array(); + +glob("../ajax/libs/**/package.json", function (error, matches) { + matches.forEach(function(element){ + var package = JSON.parse(fs.readFileSync(element, 'utf8')); + package.assets = Array(); + var versions = glob.sync("../ajax/libs/"+package.name+"/!(package.json)"); + versions.forEach(function(version) { + var temp = Object(); + temp.version = version.replace(/^.+\//, ""); + temp.files = glob.sync(version + "/**/*.*"); + + for (var i = 0; i < temp.files.length; i++){ + var regex = /(?:^.+\/)?(.+?)([\.-](?:min))?\.((?:js)|(?:css))$/ig; + var result = regex.exec(temp.files[i]); + //result[0] Original Input + //result[1] Filename + //result[2] -/.min + //result[3] file extension + + if (result == null) { + continue; + } + + if (typeof result[2] !== "undefined") { + continue; + } + + var min_exists = false; + for (var j = 0; j < temp.files.length; j++) { + var regex = /(?:^.+\/)?(.+?)([\.-](?:min))?\.((?:js)|(?:css))$/ig; + var exists = regex.exec(temp.files[j]); + if (exists == null || exists[0] == result[0]) { //Matching Same File + continue; + } + //Same name, same extension + if (exists[1] == result[1] && exists[3] == result[3] && typeof exists[2] !== "undefined") { + min_exists = true; + break; + } + } + + if (!min_exists) { + if (result[3] == "js") { + var source = fs.readFileSync(temp.files[i], 'utf8'); + var minimized = UglifyJS.minify(source, {fromString: true}); + fs.writeFileSync(version + "/" + result[1] + ".min.js", minimized, 'utf8'); + console.log("minimized file: " + version + "/" + result[1] + ".min.js"); + } else if (result[3] == "css") { + var source = fs.readFileSync(temp.files[i], 'utf8'); + var minimized = cleanCSS.process(source); + fs.writeFileSync(version + "/" + result[1] + ".min.css", minimized, 'utf8'); + console.log("minimized file: " + version + "/" + result[1] + ".min.css"); + } + } + } + }); + }); +}); diff --git a/package.json b/package.json index 757f0fc09..5fd9c913c 100644 --- a/package.json +++ b/package.json @@ -8,17 +8,19 @@ "type": "git", "url": "git://github.com/cdnjs/cdnjs.git" }, - "scripts": { "build": "./build/build.js", "test": "vows" }, - "dependencies": {}, + "dependencies": { + "clean-css": "~0.10.2", + "uglify-js": "~2.2.5" + }, "devDependencies": { - "glob": "3.1.9", - "jslint": "0.1.8", - "vows": "0.7.0", - "JSV": "4.0.1" + "glob": "3.1.9", + "jslint": "0.1.8", + "vows": "0.7.0", + "JSV": "4.0.1" }, "optionalDependencies": {}, "engines": {