enforce either
module.exportsorexports
module.exports and exports are the same instance by default.
But those come to be different if one of them is modified.
module.exports = {
foo: 1
}
exports.bar = 2In this case, exports.bar will be lost since only the instance of module.exports will be exported.
This rule enforces the export style.
If you use module.exports, this rule disallows exports.
If you use exports, this rule disallows module.exports.
You can select it by an option.
This rule has a string option.
{
"node/exports-style": [
"error",
"module.exports" or "exports",
{
"allowBatchAssign": false
}
]
}"module.exports"(default) requiresmodule.exportsand disallowsexports."exports"requiresexportsand disallowsmodule.exports.allowBatchAssign(default isfalse) allowsmodule.exports = exports = objif this istrue.
Examples of 👎 incorrect code for the "module.exports" option:
/*eslint node/exports-style: ["error", "module.exports"]*/
exports.foo = 1
exports.bar = 2Examples of 👍 correct code for the "module.exports" option:
/*eslint node/exports-style: ["error", "module.exports"]*/
module.exports = {
foo: 1,
bar: 2
}
module.exports.baz = 3Examples of 👎 incorrect code for the "exports" option:
/*eslint node/exports-style: ["error", "exports"]*/
module.exports = {
foo: 1,
bar: 2
}
module.exports.baz = 3Examples of 👍 correct code for the "exports" option:
/*eslint node/exports-style: ["error", "exports"]*/
exports.foo = 1
exports.bar = 2Examples of 👍 correct code for the "exports" and {"allowBatchAssign": true} option:
/*eslint node/exports-style: ["error", "exports", {"allowBatchAssign": true}]*/
// Allow `module.exports` in the same assignment expression as `exports`.
module.exports = exports = function foo() {
// do something.
}
exports.bar = 1