diff --git a/src/rules/no-internal-import.js b/src/rules/no-internal-import.js index 165bea3..896442a 100644 --- a/src/rules/no-internal-import.js +++ b/src/rules/no-internal-import.js @@ -1,14 +1,16 @@ import moduleVisitor, { makeOptionsSchema, } from 'eslint-module-utils/moduleVisitor'; -import parse from 'parse-package-name'; + +import fs from 'fs'; import getPackages from 'get-monorepo-packages'; -import path from 'path'; import minimatch from 'minimatch'; -import fs from 'fs'; +import parse from 'parse-package-name'; +import path from 'path'; export const meta = { schema: [makeOptionsSchema({})], + fixable: 'code' }; const withoutExtension = (importFile, fileEntry) => { @@ -76,6 +78,10 @@ export const create = context => { context.report({ node, message: `Import for monorepo package '${name}' is internal.`, + fix: function fix(fixer) { + const path = _path.parse(node.value).dir + return fixer.replaceText(node, '\'' + path + '\''); + } }); }, moduleUtilOptions); }; diff --git a/src/rules/no-relative-import.js b/src/rules/no-relative-import.js index c588f8f..22c31aa 100644 --- a/src/rules/no-relative-import.js +++ b/src/rules/no-relative-import.js @@ -1,11 +1,12 @@ -import resolve from 'eslint-module-utils/resolve'; import moduleVisitor, { makeOptionsSchema, } from 'eslint-module-utils/moduleVisitor'; + +import getPackages from 'get-monorepo-packages'; import isInside from 'path-is-inside'; import minimatch from 'minimatch'; import path from 'path'; -import getPackages from 'get-monorepo-packages'; +import resolve from 'eslint-module-utils/resolve'; export const meta = { schema: [makeOptionsSchema({})], @@ -37,12 +38,10 @@ export const create = context => { node, message: `Import for monorepo package '${pkg.package.name}' should be absolute.`, fix: fixer => { - fixer.replaceText( - node, - `${pkg.package.name}${ - subPackagePath !== '.' ? '/' + subPackagePath : '' - }` - ); + const basePath = '' + pkg.package.name + (subPackagePath !== '.' ? '/' + subPackagePath : '') + const path = _path.parse(basePath).dir + const name = _path.parse(basePath).name + return fixer.replaceText(node, '\'' + (name !== '.' && name !== 'index' ? path + '/' + name : path) + '\''); }, }); }, moduleUtilOptions);