🔧 This rule is automatically fixable by the --fix
CLI option.
Node.js allows the import of modules using an absolute path such as /home/xyz/file.js
. That is a bad practice as it ties the code using it to your computer, and therefore makes it unusable in packages distributed on npm
for instance.
This rule forbids the import of modules using absolute paths.
import f from '/foo'
import f from '/some/path'
var f = require('/foo')
var f = require('/some/path')
import _ from 'lodash'
import foo from 'foo'
import foo from './foo'
var _ = require('lodash')
var foo = require('foo')
var foo = require('./foo')
By default, only ES6 imports and CommonJS require
calls will have this rule enforced.
You may provide an options object providing true/false for any of
esmodule
: defaults totrue
commonjs
: defaults totrue
amd
: defaults tofalse
If { amd: true }
is provided, dependency paths for AMD-style define
and require
calls will be resolved:
/*eslint import-x/no-absolute-path: [2, { commonjs: false, amd: true }]*/
define(['/foo'], function (foo) {
/*...*/
}) // reported
require(['/foo'], function (foo) {
/*...*/
}) // reported
const foo = require('/foo') // ignored because of explicit `commonjs: false`