You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.1 KiB
95 lines
2.1 KiB
# import/no-commonjs |
|
|
|
Reports `require([string])` function calls. Will not report if >1 argument, |
|
or single argument is not a literal string. |
|
|
|
Reports `module.exports` or `exports.*`, also. |
|
|
|
Intended for temporary use when migrating to pure ES6 modules. |
|
|
|
## Rule Details |
|
|
|
This will be reported: |
|
|
|
```js |
|
var mod = require('./mod') |
|
, common = require('./common') |
|
, fs = require('fs') |
|
, whateverModule = require('./not-found') |
|
|
|
module.exports = { a: "b" } |
|
exports.c = "d" |
|
``` |
|
|
|
### Allow require |
|
|
|
If `allowRequire` option is set to `true`, `require` calls are valid: |
|
|
|
```js |
|
/*eslint no-commonjs: [2, { allowRequire: true }]*/ |
|
var mod = require('./mod'); |
|
``` |
|
|
|
but `module.exports` is reported as usual. |
|
|
|
### Allow conditional require |
|
|
|
By default, conditional requires are allowed: |
|
|
|
```js |
|
var a = b && require("c") |
|
|
|
if (typeof window !== "undefined") { |
|
require('that-ugly-thing'); |
|
} |
|
|
|
var fs = null; |
|
try { |
|
fs = require("fs") |
|
} catch (error) {} |
|
``` |
|
|
|
If the `allowConditionalRequire` option is set to `false`, they will be reported. |
|
|
|
If you don't rely on synchronous module loading, check out [dynamic import](https://github.com/airbnb/babel-plugin-dynamic-import-node). |
|
|
|
### Allow primitive modules |
|
|
|
If `allowPrimitiveModules` option is set to `true`, the following is valid: |
|
|
|
```js |
|
/*eslint no-commonjs: [2, { allowPrimitiveModules: true }]*/ |
|
|
|
module.exports = "foo" |
|
module.exports = function rule(context) { return { /* ... */ } } |
|
``` |
|
|
|
but this is still reported: |
|
|
|
```js |
|
/*eslint no-commonjs: [2, { allowPrimitiveModules: true }]*/ |
|
|
|
module.exports = { x: "y" } |
|
exports.z = function boop() { /* ... */ } |
|
``` |
|
|
|
This is useful for things like ESLint rule modules, which must export a function as |
|
the module. |
|
|
|
## When Not To Use It |
|
|
|
If you don't mind mixing module systems (sometimes this is useful), you probably |
|
don't want this rule. |
|
|
|
It is also fairly noisy if you have a larger codebase that is being transitioned |
|
from CommonJS to ES6 modules. |
|
|
|
|
|
## Contributors |
|
|
|
Special thanks to @xjamundx for donating the module.exports and exports.* bits. |
|
|
|
## Further Reading |
|
|
|
- [`no-amd`](./no-amd.md): report on AMD `require`, `define` |
|
- Source: https://github.com/xjamundx/eslint-plugin-modules
|
|
|