webpack-import-glob-loader

raw JSON →
1.6.3 verified Sat Apr 25 auth: no javascript

Webpack preloader that expands glob patterns in ES6 import statements (e.g., `import './foo/**/*.js'`) into individual named imports before bundled. Current version 1.6.3, maintained with occasional updates. It works as a Webpack loader, transforming source code at build time. Differentiates from alternatives like `bulk-import` by focusing on Webpack loader integration and supporting side-effect imports (e.g., `import './**/*.scss'`) and Sass `@import` globs. Use it as a preloader or chained loader.

error Error: Couldn't find loader 'webpack-import-glob-loader'
cause Loader not installed or incorrectly specified in webpack config.
fix
Run npm install webpack-import-glob-loader --save-dev and check the rule's use value.
error Module parse failed: Unexpected token (1:0) You may need an appropriate loader
cause Loader not applied before Babel or other transpilers due to rule order.
fix
Place webpack-import-glob-loader earlier in the rules array or use enforce: 'pre'.
error Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
cause Using glob import inside a function or callback instead of top-level import.
fix
Move import statements to top level; glob expansions require static analysis.
gotcha Loader expands imports before other loaders; order matters in rule chains
fix Ensure this loader runs first (as preloader) or before transpilers like Babel.
gotcha Glob patterns only work for static imports, not dynamic import()
fix Use only with static import statements; dynamic imports will not be transformed.
deprecated Webpack 4 compatibility; may need peer dep adjustments
fix Update to latest version; if using Webpack 5, ensure loader-utils version is compatible (v2+).
npm install webpack-import-glob-loader
yarn add webpack-import-glob-loader
pnpm add webpack-import-glob-loader

Webpack configuration to use the loader as a preloader for .js files, enabling glob imports.

// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        use: 'webpack-import-glob-loader'
      }
    ]
  }
};

// In your source code:
import modules from "./foo/**/*.js";
// Expands to:
// import * as module0 from "./foo/1.js";
// var modules = [module0, ...]