我想在export default obj
文件中使用module.exports = obj
代替.eslintrc.js
,因为代码库中的其他地方我们都在使用export
。
到目前为止没有运气,很难找到这个问题。
我得到的错误:
> eslint src
Cannot read config file: src/.eslintrc.js
Error: Unexpected token export
src/.eslintrc.js:23
export default foo;
^^^^^^
SyntaxError: Unexpected token export
答案 0 :(得分:1)
要将ES2015语法用于ESLint配置文件中的默认导出,可以使用Babel进行转译和使用Pirates进行钩子的组合,以劫持{{1}}语句,该语句导入用ES2015编写的ESLint配置文件。请允许我解释。
通常,ESLint将在项目根目录中查找require
文件,并且通常由Node.js对其进行解析,而无需Babel。我们将重新利用此文件的用途,以便它可以做两件事:注册一个钩子和导入ES2015 ESLint配置文件。
假设您已经拥有使用ES2015默认导出语法的.eslintrc.js
,请从该文件中剪切内容并将其粘贴到名为.eslintrc.js
或类似名称的新文件中。这个名字无关紧要。可以随便叫什么。
.es2015lintrc.js
在继续之前,请确保已安装// .es2015lintrc.js
export default {
// ESLint config properties...
}
,@babel/preset-env
,@babel/core
和eslint
软件包。接下来,创建一个定义钩子及其行为的文件。为简单起见,我们将其称为pirates
。
hook.js
然后使用// hook.js
const {addHook} = require('pirates');
const {transform} = require('@babel/core');
module.exports = options =>
addHook(
function(source, filename) {
return transform(source, {
presets: [
[
'@babel/preset-env',
{
modules: 'cjs',
targets: {
node: process.versions.node
}
}
]
]
}).code;
},
{
exts: ['.js'],
ignoreNodeModules: true,
...options
}
);
语句将此模块导入到原始.eslintrc.js
中,并注册钩子,该钩子劫持并转换以后使用require
语句导入的所有文件。最后,可以使用劫持的require
语句导入以ES2015语法编写的ESLint配置文件。
require
现在您应该很好!当使用ES2015语法编写Babel配置时,也可以使用相同的方法。享受吧!
答案 1 :(得分:0)
如果您已经安装了@babel/register
,则只需将.eslintrc.js
重命名为.eslintrc.babel.js
(或任何您喜欢的名称),然后将其添加到.eslintrc.js
:
require('@babel/register')
module.exports = require('./.eslintrc.babel.js').default