eslint-plugin-import-srclimits
v1.0.1
Published
Limit import source from some special folder in configuration
Downloads
14
Maintainers
Readme
eslint-plugin-import-srclimits
stable_version
>= 1.0.0
Limit import source from some special folder in configuration
Installation
You'll first need to install ESLint:
$ npm i eslint --save-dev
Next, install eslint-plugin-import-srclimits
:
$ npm install eslint-plugin-import-srclimits --save-dev
Note: If you installed ESLint globally (using the -g
flag) then you must also install eslint-plugin-import-srclimits
globally.
Usage
Add import-srclimit
to the plugins section of your .eslintrc.js
configuration file. You can omit the eslint-plugin-
prefix:
Set parserOptions.sourceType
value as module
in your configuration.
module.exports = {
// ...
"plugins": [
"import-srclimits"
],
"parserOptions": {
"ecmaVersion": 2015,
"sourceType": "module"
}
// ...
};
Then configure the rules you want to use under the rules section.
The effect is: The files match in
files
pattern, can only import target match insource
pattern
module.exports = {
// ...
"rules": {
"import-srclimits/srclimits": [
"error",
{
"files": ["./src/**/*.{js,vue,jsx}"],
"source": ["./src/**/*.*", "node_modules/**", "!./mock/**/*.*"],
"errMsg": "The code of the files in the src folder, can't import source file in ./mock/**"
}
]
}
// ...
};
option files
& source
can accepts glob-pattern
, regular-expression
, function(str){/* return fasle|true; */}
module.exports = {
// ...
"rules": {
"import-srclimits/srclimits": [
"warn",
{
"files": ["./src/**/*.{js,vue,jsx}"],
"source": [
(str) => (str.indexOf('util') == -1),
/os/g
],
"errMsg": "Browser code could not use node module 'util' & 'os'!!!"
}
]
}
// ...
};
see more: anymatch
Test
srclimits
valid
✓ import qs from 'qs'; (48ms)
✓ import abc from 'qs/abc';
✓ import kapp from '@scopename/kapp';
✓ import abc from '@scopename/bbb/abc';
✓ import clone from '../utils/clone.js';
✓ import '../utils/clone.js';
✓ import '../utils/clone';
✓ import { clone } from '../utils/index.js';
✓ import { clone } from '../utils/';
✓ import { clone } from '../utils';
✓ import { clone as copy } from '../utils';
✓ import * as _ from '../utils/index.js';
invalid
✓ import '../../mock/storage.js';
✓ import '../../mock/storage';
✓ import storage from '../../mock/storage.js';
✓ import storage from '../../mock/storage';
✓ import '../../mock/utils';
✓ import '../../mock/utils/';
✓ import * as _ from '../../mock/utils/index.js';
✓ import { addStyleTag } from '../../mock/utils/';
✓ import { addStyleTag as injectStyleDom } from '../../mock/utils/index';
✓ // multiple lines
import { clone } from '../utils/'; // ✓
import { base } from '../base/index'; // ✓
import { addStyleTag as injectStyleDom } from '../../mock/utils/index'; // ✘
22 passing
Others
Created by yeoman tool.