在.eslintrc.js文件中使用export default而不是module.exports

时间:2018-02-05 14:18:08

标签: javascript node.js export eslint eslintrc

我想在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

2 个答案:

答案 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/coreeslint软件包。接下来,创建一个定义钩子及其行为的文件。为简单起见,我们将其称为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