next.js/packages/next/src/build/webpack/plugins/wellknown-errors-plugin/index.ts
index.ts45 lines1.3 KB
import type { webpack } from 'next/dist/compiled/webpack/webpack'

import { getModuleBuildError } from './webpackModuleError'

const NAME = 'WellKnownErrorsPlugin'
export class WellKnownErrorsPlugin {
  apply(compiler: webpack.Compiler) {
    compiler.hooks.compilation.tap(NAME, (compilation) => {
      compilation.hooks.afterSeal.tapPromise(NAME, async () => {
        if (compilation.warnings?.length) {
          await Promise.all(
            compilation.warnings.map(async (warn, i) => {
              if (
                warn.name === 'ModuleDependencyWarning' &&
                warn.module?.context?.includes('node_modules')
              ) {
                compilation.warnings.splice(i, 1)
              }
            })
          )
        }

        if (compilation.errors?.length) {
          await Promise.all(
            compilation.errors.map(async (err, i) => {
              try {
                const moduleError = await getModuleBuildError(
                  compiler,
                  compilation,
                  err
                )
                if (moduleError !== false) {
                  compilation.errors[i] = moduleError
                }
              } catch (e) {
                console.log(e)
              }
            })
          )
        }
      })
    })
  }
}
Quest for Codev2.0.0
/
SIGN IN