disallow specified modules when loaded by
import
declarations
This rule allows you to specify modules that you don’t want to use in your application.
The rule takes an array as options: the names of restricted modules.
{
"node/no-restricted-import": ["error", [
"foo-module",
"bar-module"
]]
}
You may also specify a custom message for each module you want to restrict as follows:
{
"node/no-restricted-import": ["error", [
{
"name": "foo-module",
"message": "Please use foo-module2 instead."
},
{
"name": "bar-module",
"message": "Please use bar-module2 instead."
}
]]
}
And you can use glob patterns in the name
property.
{
"node/no-restricted-import": ["error", [
{
"name": "lodash/*",
"message": "Please use xyz-module instead."
},
{
"name": ["foo-module/private/*", "bar-module/*", "!baz-module/good"],
"message": "Please use xyz-module instead."
}
]]
}
And you can use absolute paths in the name
property.
module.exports = {
overrides: [
{
files: "client/**",
rules: {
"node/no-restricted-import": ["error", [
{
name: path.resolve(__dirname, "server/**"),
message: "Don't use server code from client code."
}
]]
}
},
{
files: "server/**",
rules: {
"node/no-restricted-import": ["error", [
{
name: path.resolve(__dirname, "client/**"),
message: "Don't use client code from server code."
}
]]
}
}
]
}
Examples of incorrect code for this rule with sample "fs", "cluster", "lodash"
restricted modules:
/*eslint node/no-restricted-import: ["error", ["fs", "cluster", "lodash/*"]]*/
import fs from 'fs';
import cluster from 'cluster';
import pick from 'lodash/pick';
Examples of correct code for this rule with sample "fs", "cluster", "lodash"
restricted modules:
/*eslint node/no-restricted-import: ["error", ["fs", "cluster", "lodash/*"]]*/
import crypto from 'crypto';
import _ from 'lodash';
/*eslint node/no-restricted-import: ["error", ["fs", "cluster", { "name": ["lodash/*", "!lodash/pick"] }]]*/
import pick from 'lodash/pick';