setup()

in packages/ice/src/esbuild/scan.ts [75:163]


    setup(build) {
      // external urls
      build.onResolve({ filter: httpUrlRE }, ({ path }) => ({
        path,
        external: true,
      }));

      // data urls
      build.onResolve({ filter: dataUrlRE }, ({ path }) => ({
        path,
        external: true,
      }));

      // css & json
      build.onResolve(
        {
          filter: /\.(css|less|sass|scss|styl|stylus|pcss|postcss|json)$/,
        }, ({ path }) => ({
          path,
          external: true,
        }),
      );

      build.onResolve(
        {
          filter: new RegExp(`\\.(${ASSET_TYPES.join('|')})$`),
        }, ({ path }) => ({
          path,
          external: true,
        }),
      );

      build.onResolve({ filter: /.*/ }, async ({ path: id, importer }) => {
        if (
          // match exclude
          exclude?.some((dep) => dep === id || id.startsWith(`${dep}/`)) ||
          // already recorded
          deps[id]
        ) {
          return {
            path: id,
            external: true,
          };
        }
        const resolved = resolve(id, importer);
        if (resolved) {
          // aliased dependencies
          if (!path.isAbsolute(resolved) && !resolved.startsWith('.') && !id.startsWith('.')) {
            const resolvePath = require.resolve(resolved, { paths: [path.dirname(importer)] });
            const { pkgPath } = getPackageData(resolvePath);
            deps[id] = {
              name: resolved,
              pkgPath,
            };
            return {
              path: resolved,
              external: true,
            };
          // deal with aliased absolute path
          } else if (id !== resolved && path.isAbsolute(resolved)) {
            if (
              // dependencies with absolute path
              resolved.includes('node_modules') ||
              // in case of package with system link when development
              !formatPath(resolved).includes(formatPath(rootDir))) {
              const { name, pkgPath } = getPackageData(resolved);
              deps[id] = {
                name,
                pkgPath,
              };
              return {
                path: resolved,
                external: true,
              };
            }
          }
        }

        if (ignores.includes(id)) {
          // alias set to be false
          return {
            path: id,
            namespace: 'EMPTY',
          };
        }
      });

      build.onLoad({ filter: /.*/, namespace: 'EMPTY' }, () => ({ contents: '' }));
    },