diff --git a/index.js b/index.js index 5dcbeda..7543347 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,11 @@ module.exports = { - parser: '@babel/eslint-parser', extends: ['standard', 'prettier'], parserOptions: { - requireConfigFile: false + requireConfigFile: false, + ecmaVersion: 'latest', + ecmaFeatures: { + jsx: true, + }, }, rules: { 'standard/computed-property-even-spacing': 'off', diff --git a/package.json b/package.json index 583e4a6..b08ab72 100644 --- a/package.json +++ b/package.json @@ -72,5 +72,23 @@ "tradeshift", "es6", "es2016" - ] + ], + "prettier": { + "printWidth": 80, + "tabWidth": 2, + "useTabs": true, + "semi": true, + "singleQuote": true, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "trailingComma": "all", + "bracketSpacing": true, + "arrowParens": "always", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "css", + "vueIndentScriptAndStyle": false, + "endOfLine": "lf" + } } diff --git a/test/validate-config.js b/test/validate-config.js index 2439b23..c413f47 100644 --- a/test/validate-config.js +++ b/test/validate-config.js @@ -1,16 +1,16 @@ const { ESLint } = require('eslint'); const test = require('tape'); -test('load config in eslint to validate all rule syntax is correct', async function(t) { +test('load config in eslint to validate all rule syntax is correct', async function (t) { const eslint = new ESLint({ useEslintrc: false, baseConfig: { extends: [ require.resolve('../'), require.resolve('../jest'), - require.resolve('../typescript') - ] - } + require.resolve('../typescript'), + ], + }, }); const code = ` @@ -31,3 +31,30 @@ test('load config in eslint to validate all rule syntax is correct', async funct t.deepEqual(resultsTS[0].messages, []); t.end(); }); + +test('check for JSX support', async function (t) { + const eslint = new ESLint({ + useEslintrc: false, + baseConfig: { + extends: [require.resolve('../'), require.resolve('../typescript')], + }, + }); + + const code = ` +export const AwesomeJSX = () => ( +
+ woop +
+); +`; + + const resultsJS = await eslint.lintText(code, { filePath: 'index.js' }); + t.deepEqual(resultsJS[0].messages, [], 'Should parse JSX in *.js'); + const resultsJSX = await eslint.lintText(code, { filePath: 'index.jsx' }); + t.deepEqual(resultsJSX[0].messages, [], 'Should parse JSX in *.jsx'); + // Note: typescript conventions dont allow JSX in *.ts files + const resultsTSX = await eslint.lintText(code, { filePath: 'index.tsx' }); + t.deepEqual(resultsTSX[0].messages, [], 'Should parse JSX in *.tsx'); + + t.end(); +});