Skip to content
This repository has been archived by the owner on Jun 15, 2023. It is now read-only.

Commit

Permalink
Update interface to 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
goshacmd committed Jan 17, 2016
1 parent d9fab60 commit 0d56ff1
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 38 deletions.
85 changes: 85 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"env": {
"node": true,
"es6": true
},
"rules": {
"block-spacing": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"comma-style": [2, "last"],
"func-style": [2, "expression"],
"semi": [2, "always"],
"quotes": [2, "single", "avoid-escape"],
"indent": [2, 2, {"SwitchCase": 1}],
"dot-location": [2, "property"],
"camelcase": [1, {"properties": "always"}],
"comma-spacing": [2, {"before": false, "after": true}],
"comma-dangle": [2, "never"],
"semi-spacing": [2, {"before": false, "after": true}],
"curly": [2, "multi-line", "consistent"],
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-irregular-whitespace": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"no-unused-vars": [2, {"varsIgnorePattern": "ignored"}],
"valid-typeof": 2,
"eqeqeq": [2, "allow-null"],
"no-array-constructor": 2,
"no-caller": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-labels": 2,
"no-iterator": 2,
"no-magic-numbers": [1, {"ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]}],
"no-multi-spaces": 2,
"no-native-reassign": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-redeclare": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-warning-comments": [1, {"terms": ["todo", "fixme", "xxx"], "location": "start"}],
"no-with": 2,
"new-parens": 2,
"wrap-iife": [2, "inside"],
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"callback-return": 2,
"handle-callback-err": 2,
"no-path-concat": 2,
"array-bracket-spacing": 2,
"eol-last": 2,
"no-multiple-empty-lines": [2, {"max": 2}],
"no-spaced-func": 2,
"no-trailing-spaces": 2,
"no-unneeded-ternary": 2,
"space-before-keywords": 2,
"space-after-keywords": 2,
"space-before-blocks": 2,
"space-before-function-paren": [2, "never"],
"space-in-parens": 2,
"space-return-throw-case": 2,
"space-unary-ops": [2, {"words": true, "nonwords": false}],
"arrow-spacing": [2, {"before": true, "after": true}],
"prefer-arrow-callback": 2,
"prefer-template": 0,
"prefer-const": 2
}
}
59 changes: 32 additions & 27 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
var CleanCSS = require('clean-css');
var sysPath = require('path');

function CleanCSSMinifier(config) {
if (config == null) config = {};
var plugins = config.plugins
if (plugins == null) plugins = {};
this.options = plugins.cleancss || {};
}
'use strict';

CleanCSSMinifier.prototype.brunchPlugin = true;
CleanCSSMinifier.prototype.type = 'stylesheet';
const CleanCSS = require('clean-css');

CleanCSSMinifier.prototype.optimize = function(data, path, callback) {
var error, optimized;
class CleanCSSMinifier {
constructor(config) {
this.options = config && config.plugins && config.plugins.cleancss || {};
}

try {
if (this.options.ignored && this.options.ignored.test(path)) {
// ignored file path: return non minified
return callback(null, data);
optimize(params) {
const data = params.data;
const path = params.path;

let error, optimized;

try {
if (this.options.ignored && this.options.ignored.test(path)) {
// ignored file path: return non minified
return Promise.resolve(data);
}
} catch (e) {
return Promise.reject(`error checking ignored files to minify ${e}`);
}
} catch (e) {
return callback('error checking ignored files to minify ' + e);
}

try {
optimized = new CleanCSS(this.options).minify(data).styles;
} catch (_error) {
error = "CSS minify failed on " + path + ": " + _error;
} finally {
callback(error, optimized || data);
try {
optimized = new CleanCSS(this.options).minify(data).styles;
} catch (_error) {
error = `CSS minify failed on ${path}: ${_error}`;
} finally {
if (error) return Promise.reject(error);

return Promise.resolve(optimized || data);
}
}
};
}

CleanCSSMinifier.prototype.brunchPlugin = true;
CleanCSSMinifier.prototype.type = 'stylesheet';

module.exports = CleanCSSMinifier;
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
"url": "git@github.com:brunch/clean-css-brunch.git"
},
"scripts": {
"test": "mocha"
"test": "node_modules/.bin/eslint index.js && node_modules/.bin/mocha"
},
"dependencies": {
"clean-css": "^3.4.8"
},
"devDependencies": {
"chai": "^3.4.1",
"mocha": "^2.3.4"
"mocha": "^2.3.4",
"eslint": "^1.10.3"
}
}
15 changes: 6 additions & 9 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,10 @@ describe('Plugin', function() {
var content = '#first { font-size: 14px; color: #b0b; }';
var expected = '#first{font-size:14px;color:#b0b}';

plugin.optimize(content, '', function(error, data) {
expect(error).not.to.be.ok;
plugin.optimize({data: content, path: ''}).then(data => {
expect(data).to.equal(expected);
done();
});
}, error => expect(error).not.to.be.ok);
});

it('should compile and produce a result clean-css options are reflected in', function(done) {
Expand All @@ -37,11 +36,10 @@ describe('Plugin', function() {
var content = '/*! comment */\n#first { color: red; }\r\n#second { color: blue; }';
var expected = '#first{color:red}' + eol + '#second{color:#00f}';

plugin.optimize(content, '', function(error, data) {
expect(error).not.to.be.ok;
plugin.optimize({data: content, path: ''}).then(data => {
expect(data).to.equal(expected);
done();
});
}, error => expect(error).not.to.be.ok);
});

it('should return a non minified css if path is in "ignore" list', function(done) {
Expand All @@ -52,11 +50,10 @@ describe('Plugin', function() {
var content = '#first { font-size: 14px; color: #b0b; }';
var expected = content;

plugin.optimize(content, 'dist\/ignore-me.css', function(error, data) {
expect(error).not.to.be.ok;
plugin.optimize({data: content, path: "dist/ignore-me.css"}).then(data => {
expect(data).to.equal(expected);
done();
});
}, error => expect(error).not.to.be.ok);
});


Expand Down

0 comments on commit 0d56ff1

Please sign in to comment.