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

Commit

Permalink
Merge pull request #10 from brunch/ignore-transpiled
Browse files Browse the repository at this point in the history
Ignore transpiled files
  • Loading branch information
paulmillr committed Sep 12, 2016
2 parents f94d035 + 143f727 commit a4ec74c
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 69 deletions.
132 changes: 100 additions & 32 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,83 +1,151 @@
{
"parserOptions": {
"ecmaVersion": 6
},
"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"],
"comma-dangle": [2, "always-multiline"],
"no-debugger": 2,
"no-dupe-args": 2,
"no-cond-assign": 2,
"no-constant-condition": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-semi": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 2,
"no-func-assign": 2,
"no-irregular-whitespace": 2,
"no-invalid-regexp": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"no-unused-vars": [2, {"varsIgnorePattern": "ignored"}],
"no-unsafe-finally": 2,
"use-isnan": 2,
"valid-typeof": 2,

"accessor-pairs": 2,
"curly": [2, "multi-line", "consistent"],
"dot-location": [2, "property"],
"dot-notation": 2,
"eqeqeq": [2, "allow-null"],
"no-array-constructor": 2,
"no-alert": 2,
"no-caller": 2,
"no-else-return": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-labels": 2,
"no-floating-decimal": 2,
"no-implicit-globals": 2,
"no-implied-eval": 2,
"no-iterator": 2,
"no-magic-numbers": [1, {"ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]}],
"no-labels": 2,
"no-lone-blocks": 2,
"no-magic-numbers": [1, {
"ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]
}],
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-native-reassign": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-return-assign": [2, "always"],
"no-script-url": 2,
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unmodified-loop-condition": 2,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-warning-comments": [1, {"terms": ["todo", "fixme", "xxx"], "location": "start"}],
"no-useless-concat": 2,
"no-useless-escape": 2,
"no-void": 2,
"no-warning-comments": [1, {
"terms": ["todo", "fixme", "xxx"],
"location": "start"
}],
"no-with": 2,
"new-parens": 2,
"wrap-iife": [2, "inside"],
"yoda": [2, "never"],

"strict": 2,
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"no-unused-vars": 2,
"callback-return": 2,
"handle-callback-err": 2,
"no-path-concat": 2,

"array-bracket-spacing": 2,
"block-spacing": 2,
"brace-style": 2,
"camelcase": 2,
"comma-spacing": 2,
"comma-style": 2,
"computed-property-spacing": 2,
"eol-last": 2,
"func-names": [2, "never"],
"func-style": [2, "expression"],
"indent": [2, 2, {"SwitchCase": 1}],
"key-spacing": 2,
"keyword-spacing": 2,
"linebreak-style": 2,
"new-cap": 2,
"new-parens": 2,
"no-array-constructor": 2,
"no-lonely-if": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multiple-empty-lines": [2, {"max": 2}],
"no-negated-condition": 2,
"no-new-object": 2,
"no-spaced-func": 2,
"no-trailing-spaces": 2,
"no-unneeded-ternary": 2,
"keyword-spacing": 2,
"no-whitespace-before-property": 2,
"object-curly-spacing": 2,
"operator-linebreak": [2, "after"],
"quote-props": [2, "as-needed"],
"quotes": [2, "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
"semi": [2, "always"],
"semi-spacing": 2,
"space-before-blocks": 2,
"space-before-function-paren": [2, "never"],
"space-in-parens": 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
"space-infix-ops": 2,
"space-unary-ops": 2,
"spaced-comment": 2,

"arrow-parens": [2, "as-needed"],
"arrow-spacing": 2,
"constructor-super": 2,
"generator-star-spacing": [2, "after"],
"no-class-assign": 2,
"no-dupe-class-members": 2,
"no-new-symbol": 2,
"no-this-before-super": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"object-shorthand": [2, "always", {"ignoreConstructors": true}],
"prefer-arrow-callback": 1,
"prefer-const": 2,
"prefer-template": 1,
"require-yield": 2,
"template-curly-spacing": 2,
"yield-star-spacing": [2, "after"]
}
}
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
language: node_js
node_js:
- '6'
- '5'
- '4'
17 changes: 8 additions & 9 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@
const esprima = require('esprima');

class JavaScriptCompiler {
constructor(brunchCfg) {
this.config = brunchCfg && brunchCfg.plugins && brunchCfg.plugins.javascript || {};
this.validate = this.config.validate;
if (this.validate == null) this.validate = true;
constructor(config) {
const js = config.plugins.javascript || {};
this.validate = 'validate' in js ? js.validate : true;
}

compile(params) {
if (this.validate) {
compile(file) {
if (this.validate && !file.map) {
try {
const errors = esprima.parse(params.data, {tolerant: true}).errors.map(error => error.message);
if (errors.length) return Promise.reject(errors);
const errors = esprima.parse(file.data, {tolerant: true});
if (errors.length) throw errors.map(error => error.message);
} catch (error) {
return Promise.reject(error);
}
}

return Promise.resolve(params);
return Promise.resolve(file);
}
}

Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
"url": "git@github.com:brunch/javascript-brunch.git"
},
"scripts": {
"test": "node_modules/.bin/eslint index.js && node_modules/.bin/mocha"
"test": "eslint index.js && eslint --env mocha test.js && mocha"
},
"dependencies": {
"esprima": "~2.6.0"
"esprima": "~3.0.0"
},
"devDependencies": {
"chai": "^3.3.0",
"mocha": "^2.3.3",
"eslint": "^2.1.0"
"chai": "^3.5.0",
"mocha": "^3.0.2",
"eslint": "^3.4.0"
}
}
51 changes: 28 additions & 23 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,46 @@
var expect = require('chai').expect;
var Plugin = require('./');
'use strict';

describe('Plugin', function() {
var plugin;
const expect = require('chai').expect;
const Plugin = require('./');

beforeEach(function() {
plugin = new Plugin({});
describe(Plugin.name, () => {
let plugin;

beforeEach(() => {
plugin = new Plugin({plugins: {}});
});

it('should be an object', function() {
expect(plugin).to.be.ok;
it('should be an object', () => {
expect(plugin).to.be.an('object');
});

it('should has #compile method', function() {
expect(plugin.compile).to.be.an.instanceof(Function);
it('should have #compile method', () => {
expect(plugin).to.respondTo('compile');
});

it('should compile and produce valid result', function(done) {
var content = 'var a = 6;';
var expected = 'var a = 6;';
it('should compile and produce valid result', () => {
const data = 'var a = 6;';

plugin.compile({data: content, path: 'file.js'}).then(result => {
var data = result.data;
expect(data).to.equal(expected);
done();
}, error => expect(error).not.to.be.ok);
return plugin.compile({data}).then(result => {
expect(result.data).to.equal(data);
});
});

it('should validate JS syntax', function(done) {
plugin.compile({data: 'var a =;', path: 'file.js'}).then(null, error => {
it('should validate JS syntax', () => {
return plugin.compile({data: 'var a =;'}).catch(error => {
expect(error).to.be.an.instanceof(Error);
done();
});
});

it('should not validate JS syntax with an option', function(done) {
it('should not validate JS syntax with an option', () => {
plugin = new Plugin({plugins: {javascript: {validate: false}}});
plugin.compile({data: 'var a =;', path: 'file.js'}).then(() => done(), error => expect(error).not.to.be.ok);
return plugin.compile({data: 'var a =;'});
});

it('should not validate syntax of transpiled files', () => {
const file = {data: 'var a =;', map: {}};
return plugin.compile(file).then(result => {
expect(result).to.equal(file);
});
});
});

0 comments on commit a4ec74c

Please sign in to comment.