Skip to content

Commit

Permalink
Fix installing XO on npm 6 by bundling TS-dependent dependencies to a…
Browse files Browse the repository at this point in the history
…void hoisting (#624)
  • Loading branch information
voxpelli committed Oct 27, 2021
1 parent eefd88a commit c9bbfb1
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 4 deletions.
6 changes: 5 additions & 1 deletion index.js
@@ -1,3 +1,4 @@
import {fileURLToPath} from 'node:url';
import path from 'node:path';
import {ESLint} from 'eslint';
import {globby, isGitIgnoredSync} from 'globby';
Expand Down Expand Up @@ -26,7 +27,10 @@ const runEslint = async (lint, options) => {
return getIgnoredReport(filePath);
}

const eslint = new ESLint(eslintOptions);
const eslint = new ESLint({
...eslintOptions,
resolvePluginsRelativeTo: path.dirname(fileURLToPath(import.meta.url)),
});

if (filePath && await eslint.isPathIgnored(filePath)) {
return getIgnoredReport(filePath);
Expand Down
2 changes: 1 addition & 1 deletion lib/options-manager.js
Expand Up @@ -437,7 +437,7 @@ const mergeWithPrettierConfig = (options, prettierOptions) => {

const buildTSConfig = options => config => {
if (options.ts) {
config.baseConfig.extends.push('xo-typescript');
config.baseConfig.extends.push(require.resolve('eslint-config-xo-typescript'));
config.baseConfig.parser = require.resolve('@typescript-eslint/parser');
config.baseConfig.parserOptions = {
...config.baseConfig.parserOptions,
Expand Down
5 changes: 5 additions & 0 deletions package.json
Expand Up @@ -51,6 +51,11 @@
"javascript",
"typescript"
],
"bundledDependencies": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"eslint-config-xo-typescript"
],
"dependencies": {
"@eslint/eslintrc": "^1.0.1",
"@typescript-eslint/eslint-plugin": "^4.32.0",
Expand Down
4 changes: 2 additions & 2 deletions test/options-manager.js
Expand Up @@ -127,7 +127,7 @@ test('buildConfig: prettier: true, typescript file', t => {

// eslint-prettier-config must always be last
t.is(config.baseConfig.extends[config.baseConfig.extends.length - 1], 'plugin:prettier/recommended');
t.is(config.baseConfig.extends[config.baseConfig.extends.length - 2], 'xo-typescript');
t.regex(config.baseConfig.extends[config.baseConfig.extends.length - 2], /xo-typescript/);

// Indent rule is not enabled
t.is(config.baseConfig.rules.indent, undefined);
Expand Down Expand Up @@ -429,7 +429,7 @@ test('buildConfig: extends', t => {
test('buildConfig: typescript', t => {
const config = manager.buildConfig({ts: true, tsConfigPath: './tsconfig.json'});

t.is(config.baseConfig.extends[config.baseConfig.extends.length - 1], 'xo-typescript');
t.regex(config.baseConfig.extends[config.baseConfig.extends.length - 1], /xo-typescript/);
t.is(config.baseConfig.parser, require.resolve('@typescript-eslint/parser'));
t.deepEqual(config.baseConfig.parserOptions, {
warnOnUnsupportedTypeScriptVersion: false,
Expand Down

0 comments on commit c9bbfb1

Please sign in to comment.