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.
		
		
		
		
		
			
		
			
				
					
					
						
							96 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							96 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
 |