• Stars
    star
    313
  • Rank 133,714 (Top 3 %)
  • Language
    JavaScript
  • Created almost 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Eslint plugin to check filenames.

eslint-plugin-filenames

This project is no longer actively maintained

NPM Version Build Status Coverage Status Dependencies

Adds eslint 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.

{
  "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.

"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.

// 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:

"filenames/match-exported": [ 2, "kebab" ]

Now, in your code:

// Considered problem only if file isn't named variable-name.js or variable-name/index.js
export default function variableName;

Available transforms: 'snake', 'kebab', 'camel', 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):

"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.

"filenames/match-exported": [ 2, null, "\\.react$" ]

Now, in your code:

// 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).

"filenames/match-exported": [ 2, null, null, true ]

Now, in your code:

// 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

More Repositories

1

node-sprite-generator

Generates image sprites and their spritesheets (css, stylus, sass or less) from sets of images. Supports retina sprites. Provides express middleware and grunt task.
JavaScript
192
star
2

miner-dashboard

Node.js based app to show the current status of your miner in a browser.
JavaScript
35
star
3

react-gtk

React renderer for GTK applications in gjs
JavaScript
33
star
4

node-julius-net

Use the julius speech recognition engine in node through the julius module interface.
JavaScript
10
star
5

home-automation

Use Arduinos and a Raspberry Pi to do home automation.
Python
6
star
6

nixos-config

My NixOS config
Nix
5
star
7

rsvg-rs

Librsvg bindings for rust
Rust
5
star
8

redlurker

A progressive reddit webapp
JavaScript
4
star
9

posejs

Page object oriented selenium-webdriver library for node.
JavaScript
4
star
10

numpy2vtk

A thin wrapper around VTK that converts numpy arrays into ready-to-render VTK objects.
Python
3
star
11

nixos-hcloud-packer

Create a NixOS snapshot on Hetzner Cloud using Packer
Nix
2
star
12

ja2-fife-demo

Small demo for using the Jagged Alliance 2 Assets in the FIFE engine.
Python
2
star
13

iron-pack

Zero-configuration compression middleware for iron
Rust
2
star
14

rnix-analyzer

Allows to analyze nix code and query the result. Intended for use in a language server.
Nix
2
star
15

nixcodemod

Library to enable easy automated code refactorings for Nix
Rust
1
star
16

master-of-bones

Master Thesis about finding local shape variations in sheep bones
Python
1
star
17

qrcode-wasm

A web-based QR Code detector using WASM
Rust
1
star
18

rustix

Create nix derivations from a Cargo.lock file
Python
1
star
19

stasm-java

Experimental java wrapper for the libstasm library.
C++
1
star