纱线工作区,工作区不会发出错误或警告

问题描述

我遵循以下 post 以使用纱线工作区和 craco 创建一个 monorepo。 除了一件事之外,它工作得非常好:公共(组件)库的错误/警告不会发送到控制台。 结构很简单:

monorepo
|-packages
  |-components
  |-fe

Fe 是使用组件库的主要 webApp。 FE 会正确发出所有警告,而组件则不会。

如何让共享组件发出警告/错误

更新:

在此 repo 中重现的步骤: https://github.com/sofoklisM/my-monorepo.git

解决方法

您需要更改的是 Create React App 使用的 context optionunderlying ESLint Webpack plugin。 在这种情况下,我将 ESLint 的上下文更改为 monorepo 的根(纱线工作区根)。

这是一个更新的 craco.config.js 应该可以解决问题:

// craco.config.js
const path = require("path");
const { getLoader,loaderByName } = require("@craco/craco");
const { getPlugin,pluginByName } = require("@craco/craco/lib/webpack-plugins")
const absolutePath = path.join(__dirname,"../components");
module.exports = {
  webpack: {
    alias: {},plugins: [],configure: (webpackConfig,{ env,paths }) => {
      const { isFound,match } = getLoader(
        webpackConfig,loaderByName("babel-loader")
      );
      if (isFound) {
        const include = Array.isArray(match.loader.include)
          ? match.loader.include
          : [match.loader.include];
        match.loader.include = include.concat([absolutePath]);
      }

      // Change context of ESLint Webpack Plugin
      const { match: eslintPlugin } = getPlugin(webpackConfig,pluginByName("ESLintWebpackPlugin"));
      eslintPlugin.options['context'] = path.join(__dirname,"../..");

      return webpackConfig;
    }
  }
};

我还在此处制作了您的复制存储库的更新分支:https://github.com/ofhouse/stackoverflow-65447779

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...