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

igetnqfo  于 2023-05-27  发布在  Java
关注(0)|答案(3)|浏览(191)

我想在我的.eslintrc.js文件中使用export default obj而不是module.exports = obj,因为代码库中的其他地方都使用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
mbjcgjjk

mbjcgjjk1#

要在ESLint配置文件中使用ES 2015语法进行默认导出,可以使用Babel进行编译和Pirates进行钩子,以劫持导入ES 2015中编写的ESLint配置文件的require语句。请允许我解释一下。
通常,ESLint会在项目根目录中查找.eslintrc.js文件,通常由Node.js解析,而不使用Babel。我们将重新调整此文件的用途,以便它执行两项操作:注册钩子并导入ES 2015 ESLint配置文件。
假设您已经有一个使用ES 2015默认导出语法的.eslintrc.js,请从该文件中剪切内容并将其粘贴到名为.es2015lintrc.js或类似名称的新文件中。名字无关紧要;你想叫它什么都行

// .es2015lintrc.js

export default {

// ESLint config properties...

}

在继续之前,请确保已安装@babel/preset-env@babel/coreeslintpirates软件包。接下来,创建一个定义钩子及其行为的文件。为了简单起见,我们将其称为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
    }
  );

然后使用require语句将此模块导入到原始.eslintrc.js中,并注册hook,该hook劫持并转换所有使用未来require语句导入的文件。最后,用ES 2015语法编写的ESLint配置文件可以使用我们劫持的require语句导入。

// .eslintrc.js

const registerHook = require('./hook');
registerHook();

module.exports = require('./.es2015lintrc').default;

现在你应该可以走了!在ES 2015语法中编写Babel配置时也可以使用相同的方法。好好享受吧!

tcbh2hod

tcbh2hod2#

如果您已经安装了@babel/register,那么只需将.eslintrc.js重命名为.eslintrc.babel.js(或任何您喜欢的名称)并将其添加到.eslintrc.js

require('@babel/register')
module.exports = require('./.eslintrc.babel.js').default
vcudknz3

vcudknz33#

不幸的是:
ESLint目前不支持ESM配置。
https://eslint.org/docs/latest/use/configure/configuration-files#configuration-file-formats

相关问题