Permalink
Cannot retrieve contributors at this time
162 lines (112 sloc)
5.11 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/eslint-plugin-filenames/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# eslint-plugin-filenames | |
[](https://www.npmjs.org/package/eslint-plugin-filenames) | |
[](https://travis-ci.org/selaux/eslint-plugin-filenames) | |
[](https://coveralls.io/r/selaux/eslint-plugin-filenames?branch=master) | |
[](https://david-dm.org/selaux/eslint-plugin-filenames) | |
Adds [eslint](http://eslint.org/) rules to ensure consistent filenames for your javascript files. | |
__Please note__: This plugin will only lint the filenames of the `.js`, `.jsx` files you are linting with eslint. It will ignore other files that are not linted with eslint. | |
## Enabling the plugin | |
This plugin requires a version of `eslint>=1.0.0` to be installed as a peer dependency. | |
Modify your `.eslintrc` file to load the plugin and enable the rules you want to use. | |
```json | |
{ | |
"plugins": [ | |
"filenames" | |
], | |
"rules": { | |
"filenames/match-regex": 2, | |
"filenames/match-exported": 2, | |
"filenames/no-index": 2 | |
} | |
} | |
``` | |
## Rules | |
### Consistent Filenames via regex (match-regex) | |
A rule to enforce a certain file naming convention using a regular expression. | |
The convention can be configured using a regular expression (the default is `camelCase.js`). Additionally | |
exporting files can be ignored with a second configuration parameter. | |
```json | |
"filenames/match-regex": [2, "^[a-z_]+$", true] | |
``` | |
With these configuration options, `camelCase.js` will be reported as an error while `snake_case.js` will pass. | |
Additionally the files that have a named default export (according to the logic in the `match-exported` rule) will be | |
ignored. They could be linted with the `match-exported` rule. Please note that exported function calls are not | |
respected in this case. | |
### Matching Exported Values (match-exported) | |
Match the file name against the default exported value in the module. Files that dont have a default export will | |
be ignored. The exports of `index.js` are matched against their parent directory. | |
```js | |
// Considered problem only if the file isn't named foo.js or foo/index.js | |
export default function foo() {} | |
// Considered problem only if the file isn't named Foo.js or Foo/index.js | |
module.exports = class Foo() {} | |
// Considered problem only if the file isn't named someVariable.js or someVariable/index.js | |
module.exports = someVariable; | |
// Never considered a problem | |
export default { foo: "bar" }; | |
``` | |
If your filename policy doesn't quite match with your variable naming policy, you can add one or multiple transforms: | |
```json | |
"filenames/match-exported": [ 2, "kebab" ] | |
``` | |
Now, in your code: | |
```js | |
// Considered problem only if file isn't named variable-name.js or variable-name/index.js | |
export default function variableName; | |
``` | |
Available transforms: | |
'[snake](https://www.npmjs.com/package/lodash.snakecase)', | |
'[kebab](https://www.npmjs.com/package/lodash.kebabcase)', | |
'[camel](https://www.npmjs.com/package/lodash.camelcase)', and | |
'pascal' (camel-cased with first letter in upper case). | |
For multiple transforms simply specify an array like this (null in this case stands for no transform): | |
```json | |
"filenames/match-exported": [2, [ null, "kebab", "snake" ] ] | |
``` | |
If you prefer to use suffixes for your files (e.g. `Foo.react.js` for a React component file), | |
you can use a second configuration parameter. It allows you to remove parts of a filename matching a regex pattern | |
before transforming and matching against the export. | |
```json | |
"filenames/match-exported": [ 2, null, "\\.react$" ] | |
``` | |
Now, in your code: | |
```js | |
// Considered problem only if file isn't named variableName.react.js, variableName.js or variableName/index.js | |
export default function variableName; | |
``` | |
If you also want to match exported function calls you can use the third option (a boolean flag). | |
```json | |
"filenames/match-exported": [ 2, null, null, true ] | |
``` | |
Now, in your code: | |
```js | |
// Considered problem only if file isn't named functionName.js or functionName/index.js | |
export default functionName(); | |
``` | |
### Don't allow index.js files (no-index) | |
Having a bunch of `index.js` files can have negative influence on developer experience, e.g. when | |
opening files by name. When enabling this rule. `index.js` files will always be considered a problem. | |
## Changelog | |
#### 1.3.2 | |
- Fix issue with `match-regex` and `getExportedName` | |
#### 1.3.1 | |
- Put breaking change from `1.3.0` behind a flag | |
#### 1.3.0 | |
- Support call expressions as named exports | |
#### 1.2.0 | |
- Introduce `strip` option for `match-exported` | |
- Introduce support for multiple transform options | |
- Introduce `pascal` transform | |
#### 1.1.0 | |
- Introduce `transform` option for `match-exported` | |
#### 1.0.0 | |
- Split rule into `match-regex`, `match-exported` and `no-index` | |
#### 0.2.0 | |
- Add match-exported flags | |
#### 0.1.2 | |
- Fix example in README | |
#### 0.1.1 | |
- Fix: Text via stdin always passes | |
- Tests: Travis builds also run on node 0.12 and iojs now | |
#### 0.1.0 | |
- Initial Release |