Skip to content

Instantly share code, notes, and snippets.

@Jaid
Last active September 19, 2023 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jaid/ed844cfe3cedbaed6f988f40f0133e6e to your computer and use it in GitHub Desktop.
Save Jaid/ed844cfe3cedbaed6f988f40f0133e6e to your computer and use it in GitHub Desktop.
webpack-config-jaid example outputs

webpack-config-jaid example outputs

Development

Command

DEBUG=webpack-config-jaid DEBUG_DEPTH=7 npm run build:dev

Output

{
  name: 'main',
  entry: { index: 'D:\\git\\epoch-seconds\\src\\index.js' },
  context: 'D:\\git\\epoch-seconds',
  mode: 'development',
  devtool: 'source-map',
  optimization: {},
  module: {
    rules: [
      {
        test: /\.(js|jsx|ts|tsx)$/,
        oneOf: [
          {
            include: 'D:\\git\\epoch-seconds\\src',
            loader: 'babel-loader'
          }
        ]
      },
      { test: /\.(yaml|yml)$/, loader: 'yml-loader' },
      { test: /\.lines$/, loader: 'lines-loader' },
      {
        test: /\.rlines$/,
        loader: 'lines-loader',
        options: { sort: true, random: true }
      },
      { test: /\.txt$/, type: 'asset/source' },
      { resourceQuery: /\?raw$/, type: 'asset/source' },
      {
        test: /\.(hbs|handlebars)$/,
        oneOf: [
          { resourceQuery: /\?html/, loader: 'handlebars-loader' },
          {
            loader: 'handlebars-loader',
            options: { precompileOptions: { noEscape: true } }
          }
        ]
      }
    ],
    parser: { javascript: { importMeta: true, importMetaContext: true } }
  },
  plugins: [
    LoaderOptionsPlugin {
      options: {
        debug: true,
        minimize: false,
        test: { test: [Function: test] }
      }
    },
    D {
      options: {
        publishimo: [AsyncFunction (anonymous)],
        filename: 'package.json',
        format: false,
        autoMain: true,
        autoTypes: false,
        banner: false,
        unicodeCopyright: true,
        productionOnly: true,
        debugFolder: null,
        incudeFields: [],
        excludeFields: [],
        json5: false,
        autoExclude: false,
        includeDefaultBinName: true,
        includeFields: [ 'type' ]
      }
    },
    IgnorePlugin {
      options: { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ },
      checkIgnore: [Function: bound checkIgnore]
    }
  ],
  output: {
    filename: '[name].js',
    chunkFilename: '[name].js',
    assetModuleFilename: 'assets/[file]',
    path: 'D:\\git\\epoch-seconds\\dist\\package\\development',
    module: true,
    chunkFormat: 'module',
    chunkLoading: 'import',
    hashDigest: 'base64url',
    hashDigestLength: 8,
    library: { type: 'module' }
  },
  stats: {
    all: false,
    assets: true,
    assetsSort: '!size',
    excludeAssets: /.(map|d.ts)$/,
    colors: true,
    warnings: true,
    errors: true,
    errorDetails: true
  },
  performance: { maxEntrypointSize: 4000000, maxAssetSize: 4000000 },
  experiments: { outputModule: true, topLevelAwait: true, futureDefaults: true },
  externals: [AsyncFunction (anonymous)],
  target: 'web'
}

Output (processed by Webpack)

{
  amd: undefined,
  bail: undefined,
  cache: { type: 'memory', maxGenerations: Infinity, cacheUnaffected: true },
  context: 'D:\\git\\epoch-seconds',
  dependencies: undefined,
  devServer: undefined,
  devtool: 'source-map',
  entry: { index: { import: [ 'D:\\git\\epoch-seconds\\src\\index.js' ] } },
  experiments: {
    outputModule: true,
    topLevelAwait: true,
    futureDefaults: true,
    buildHttp: undefined,
    lazyCompilation: undefined,
    css: { exportsOnly: false },
    backCompat: false,
    syncWebAssembly: false,
    asyncWebAssembly: true,
    layers: false,
    cacheUnaffected: true
  },
  externals: [AsyncFunction (anonymous)],
  externalsPresets: {
    web: true,
    node: false,
    nwjs: false,
    electron: false,
    electronMain: false,
    electronPreload: false,
    electronRenderer: false
  },
  externalsType: 'module',
  ignoreWarnings: undefined,
  infrastructureLogging: {
    stream: <ref *1> WriteStream {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: null,
      _closeAfterHandlingError: false,
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 0,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: true,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        dataEmitted: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] { end: [Function: onReadableStreamEnd] },
      _eventsCount: 1,
      _maxListeners: undefined,
      _writableState: <ref *2> WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        afterWriteTickInfo: {
          count: 12,
          cb: [Function: nop],
          stream: [Circular *1],
          state: [Circular *2]
        },
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 12,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      columns: 114,
      rows: 72,
      _type: 'tty',
      fd: 2,
      _isStdio: true,
      destroySoon: [Function: destroy],
      _destroy: [Function: dummyDestroy],
      [Symbol(async_id_symbol)]: 9,
      [Symbol(kHandle)]: TTY { [Symbol(owner_symbol)]: [Circular *1] },
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    level: 'info',
    debug: false,
    colors: true,
    appendOnly: false
  },
  loader: {
    target: 'web',
    environment: {
      globalThis: undefined,
      bigIntLiteral: undefined,
      const: true,
      arrowFunction: true,
      forOf: true,
      destructuring: true,
      optionalChaining: true,
      templateLiteral: true,
      dynamicImport: true,
      dynamicImportInWorker: true,
      module: true
    }
  },
  mode: 'development',
  module: {
    noParse: undefined,
    unsafeCache: [Function (anonymous)],
    parser: {
      javascript: {
        unknownContextRequest: '.',
        unknownContextRegExp: false,
        unknownContextRecursive: true,
        unknownContextCritical: true,
        exprContextRequest: '.',
        exprContextRegExp: false,
        exprContextRecursive: true,
        exprContextCritical: true,
        wrappedContextRegExp: /.*/,
        wrappedContextRecursive: true,
        wrappedContextCritical: false,
        strictExportPresence: undefined,
        strictThisContextOnImports: false,
        importMeta: true,
        importMetaContext: true,
        dynamicImportMode: 'lazy',
        dynamicImportPrefetch: false,
        dynamicImportPreload: false,
        dynamicImportFetchPriority: false,
        createRequire: false,
        exportsPresence: 'error'
      },
      asset: { dataUrlCondition: { maxSize: 8096 } }
    },
    generator: {},
    defaultRules: [
      { mimetype: 'application/node', type: 'javascript/auto' },
      { test: /\.json$/i, type: 'json' },
      { mimetype: 'application/json', type: 'json' },
      {
        test: /\.mjs$/i,
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      {
        test: /\.js$/i,
        descriptionData: { type: 'module' },
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      { test: /\.cjs$/i, type: 'javascript/dynamic' },
      {
        test: /\.js$/i,
        descriptionData: { type: 'commonjs' },
        type: 'javascript/dynamic'
      },
      {
        mimetype: { or: [ 'text/javascript', 'application/javascript' ] },
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      {
        test: /\.wasm$/i,
        type: 'webassembly/async',
        rules: [
          {
            descriptionData: { type: 'module' },
            resolve: { fullySpecified: true }
          }
        ]
      },
      {
        mimetype: 'application/wasm',
        type: 'webassembly/async',
        rules: [
          {
            descriptionData: { type: 'module' },
            resolve: { fullySpecified: true }
          }
        ]
      },
      {
        test: /\.css$/i,
        type: 'css/auto',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        mimetype: 'text/css+module',
        type: 'css/module',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        mimetype: 'text/css',
        type: 'css',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        dependency: 'url',
        oneOf: [
          { scheme: /^data$/, type: 'asset/inline' },
          { type: 'asset/resource' }
        ]
      },
      { assert: { type: 'json' }, type: 'json' }
    ],
    rules: [
      {
        test: /\.(js|jsx|ts|tsx)$/,
        oneOf: [
          {
            include: 'D:\\git\\epoch-seconds\\src',
            loader: 'babel-loader'
          }
        ]
      },
      { test: /\.(yaml|yml)$/, loader: 'yml-loader' },
      { test: /\.lines$/, loader: 'lines-loader' },
      {
        test: /\.rlines$/,
        loader: 'lines-loader',
        options: { sort: true, random: true }
      },
      { test: /\.txt$/, type: 'asset/source' },
      { resourceQuery: /\?raw$/, type: 'asset/source' },
      {
        test: /\.(hbs|handlebars)$/,
        oneOf: [
          { resourceQuery: /\?html/, loader: 'handlebars-loader' },
          {
            loader: 'handlebars-loader',
            options: { precompileOptions: { noEscape: true } }
          }
        ]
      }
    ]
  },
  name: 'main',
  node: { global: 'warn', __filename: 'warn-mock', __dirname: 'warn-mock' },
  optimization: {
    runtimeChunk: false,
    splitChunks: {
      defaultSizeTypes: [ 'javascript', 'css', 'unknown' ],
      cacheGroups: {
        default: {
          idHint: '',
          reuseExistingChunk: true,
          minChunks: 2,
          priority: -20
        },
        defaultVendors: {
          idHint: 'vendors',
          reuseExistingChunk: true,
          test: /[\\/]node_modules[\\/]/i,
          priority: -10
        }
      },
      hidePathInfo: false,
      chunks: 'async',
      usedExports: false,
      minChunks: 1,
      minSize: 10000,
      minRemainingSize: 0,
      enforceSizeThreshold: 30000,
      maxAsyncRequests: Infinity,
      maxInitialRequests: Infinity,
      automaticNameDelimiter: '-'
    },
    emitOnErrors: true,
    removeAvailableModules: false,
    removeEmptyChunks: true,
    mergeDuplicateChunks: true,
    flagIncludedChunks: false,
    moduleIds: 'named',
    chunkIds: 'named',
    sideEffects: 'flag',
    providedExports: true,
    usedExports: false,
    innerGraph: false,
    mangleExports: false,
    concatenateModules: false,
    checkWasmTypes: false,
    mangleWasmImports: false,
    portableRecords: false,
    realContentHash: false,
    minimize: false,
    minimizer: [ { apply: [Function: apply] } ],
    nodeEnv: 'development'
  },
  output: {
    assetModuleFilename: 'assets/[file]',
    asyncChunks: true,
    charset: true,
    chunkFilename: '[name].js',
    chunkFormat: 'module',
    chunkLoading: 'import',
    chunkLoadingGlobal: 'webpackChunkepoch_seconds',
    chunkLoadTimeout: 120000,
    cssFilename: '[name].css',
    cssChunkFilename: '[name].css',
    clean: undefined,
    compareBeforeEmit: true,
    crossOriginLoading: false,
    devtoolFallbackModuleFilenameTemplate: undefined,
    devtoolModuleFilenameTemplate: undefined,
    devtoolNamespace: 'epoch-seconds',
    environment: {
      globalThis: undefined,
      bigIntLiteral: undefined,
      const: true,
      arrowFunction: true,
      forOf: true,
      destructuring: true,
      optionalChaining: true,
      templateLiteral: true,
      dynamicImport: true,
      dynamicImportInWorker: true,
      module: true
    },
    enabledChunkLoadingTypes: [ 'import' ],
    enabledLibraryTypes: [ 'module' ],
    enabledWasmLoadingTypes: [ 'fetch' ],
    filename: '[name].js',
    globalObject: 'self',
    hashDigest: 'base64url',
    hashDigestLength: 8,
    hashFunction: 'xxhash64',
    hashSalt: undefined,
    hotUpdateChunkFilename: '[id].[fullhash].hot-update.mjs',
    hotUpdateGlobal: 'webpackHotUpdateepoch_seconds',
    hotUpdateMainFilename: '[runtime].[fullhash].hot-update.json',
    ignoreBrowserWarnings: undefined,
    iife: false,
    importFunctionName: 'import',
    importMetaName: 'import.meta',
    scriptType: 'module',
    library: {
      type: 'module',
      auxiliaryComment: undefined,
      amdContainer: undefined,
      export: undefined,
      name: undefined,
      umdNamedDefine: undefined
    },
    module: true,
    path: 'D:\\git\\epoch-seconds\\dist\\package\\development',
    pathinfo: true,
    publicPath: 'auto',
    sourceMapFilename: '[file].map[query]',
    sourcePrefix: undefined,
    strictModuleExceptionHandling: false,
    trustedTypes: undefined,
    uniqueName: 'epoch-seconds',
    wasmLoading: 'fetch',
    webassemblyModuleFilename: '[hash].module.wasm',
    workerPublicPath: '',
    workerChunkLoading: false,
    workerWasmLoading: 'fetch'
  },
  parallelism: 100,
  performance: { maxEntrypointSize: 4000000, maxAssetSize: 4000000, hints: false },
  plugins: [
    CLIPlugin {
      options: {
        configPath: 'D:\\git\\epoch-seconds\\webpack.config.js',
        helpfulOutput: true,
        hot: undefined,
        progress: undefined,
        prefetch: undefined,
        analyze: undefined
      },
      logger: WebpackLogger {
        getChildLogger: [Function (anonymous)],
        [Symbol(webpack logger raw log method)]: [Function (anonymous)]
      }
    },
    LoaderOptionsPlugin {
      options: {
        debug: true,
        minimize: false,
        test: { test: [Function: test] }
      }
    },
    D {
      options: {
        publishimo: [AsyncFunction (anonymous)],
        filename: 'package.json',
        format: false,
        autoMain: true,
        autoTypes: false,
        banner: false,
        unicodeCopyright: true,
        productionOnly: true,
        debugFolder: null,
        incudeFields: [],
        excludeFields: [],
        json5: false,
        autoExclude: false,
        includeDefaultBinName: true,
        includeFields: [ 'type' ]
      }
    },
    IgnorePlugin {
      options: { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ },
      checkIgnore: [Function: bound checkIgnore]
    },
    MyPlugin {}
  ],
  profile: false,
  recordsInputPath: false,
  recordsOutputPath: false,
  resolve: {
    byDependency: {
      wasm: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      esm: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      loaderImport: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      worker: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ],
        preferRelative: true
      },
      commonjs: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      amd: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      loader: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      unknown: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      undefined: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      'css-import': {
        conditionNames: [ 'webpack', 'development', 'style' ],
        mainFiles: [],
        extensions: [ '.css' ],
        mainFields: [ 'style', '...' ]
      },
      url: { preferRelative: true }
    },
    cache: true,
    modules: [ 'node_modules' ],
    conditionNames: [ 'webpack', 'development', 'browser' ],
    mainFiles: [ 'index' ],
    extensions: [],
    aliasFields: [],
    exportsFields: [ 'exports' ],
    roots: [ 'D:\\git\\epoch-seconds' ],
    mainFields: [ 'main' ]
  },
  resolveLoader: {
    cache: true,
    conditionNames: [ 'loader', 'require', 'node' ],
    exportsFields: [ 'exports' ],
    mainFields: [ 'loader', 'main' ],
    extensions: [ '.js' ],
    mainFiles: [ 'index' ]
  },
  snapshot: {
    resolveBuildDependencies: { timestamp: true, hash: true },
    buildDependencies: { timestamp: true, hash: true },
    resolve: { timestamp: true },
    module: { timestamp: true },
    immutablePaths: [],
    managedPaths: [ /^(.+?[\\/]node_modules[\\/])/ ]
  },
  stats: {
    all: false,
    assets: true,
    assetsSort: '!size',
    excludeAssets: /.(map|d.ts)$/,
    colors: true,
    warnings: true,
    errors: true,
    errorDetails: true
  },
  target: 'web',
  watch: false,
  watchOptions: {}
}

Production

Command

DEBUG=webpack-config-jaid DEBUG_DEPTH=7 npm run build:prod

Output

{
  name: 'main',
  entry: { index: 'D:\\git\\epoch-seconds\\src\\index.js' },
  context: 'D:\\git\\epoch-seconds',
  mode: 'production',
  devtool: 'source-map',
  optimization: {
    chunkIds: 'deterministic',
    concatenateModules: true,
    mangleExports: 'size',
    removeAvailableModules: true,
    runtimeChunk: { name: 'runtime' },
    splitChunks: {
      chunks: 'async',
      cacheGroups: {
        defaultVendors: {
          test: /[/\\]node_modules[/\\]/,
          name: 'vendor',
          chunks: 'all'
        }
      }
    },
    minimizer: [
      TerserPlugin {
        options: {
          test: /\.[cm]?js(\?.*)?$/i,
          extractComments: false,
          parallel: true,
          include: undefined,
          exclude: undefined,
          minimizer: {
            implementation: [AsyncFunction: terserMinify] {
              getMinimizerVersion: [Function (anonymous)]
            },
            options: {
              compress: {
                passes: 1,
                unsafe_comps: true,
                unsafe_math: true,
                unsafe_regexp: true,
                unsafe_undefined: true
              },
              output: { ecma: 2019, comments: [Function: comments] },
              toplevel: true,
              module: true
            }
          }
        }
      }
    ]
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx|ts|tsx)$/,
        oneOf: [
          {
            include: 'D:\\git\\epoch-seconds\\src',
            loader: 'babel-loader'
          }
        ]
      },
      { test: /\.(yaml|yml)$/, loader: 'yml-loader' },
      { test: /\.lines$/, loader: 'lines-loader' },
      {
        test: /\.rlines$/,
        loader: 'lines-loader',
        options: { sort: true, random: true }
      },
      { test: /\.txt$/, type: 'asset/source' },
      { resourceQuery: /\?raw$/, type: 'asset/source' },
      {
        test: /\.(hbs|handlebars)$/,
        oneOf: [
          { resourceQuery: /\?html/, loader: 'handlebars-loader' },
          {
            loader: 'handlebars-loader',
            options: { precompileOptions: { noEscape: true } }
          }
        ]
      }
    ],
    parser: { javascript: { importMeta: true, importMetaContext: true } }
  },
  plugins: [
    LoaderOptionsPlugin {
      options: {
        debug: false,
        minimize: true,
        test: { test: [Function: test] }
      }
    },
    CleanWebpackPlugin {
      dangerouslyAllowCleanPatternsOutsideProject: false,
      dry: false,
      verbose: false,
      cleanStaleWebpackAssets: true,
      protectWebpackAssets: true,
      cleanAfterEveryBuildPatterns: [],
      cleanOnceBeforeBuildPatterns: [ 'D:\\git\\epoch-seconds\\dist\\package\\production' ],
      currentAssets: [],
      initialClean: false,
      outputPath: '',
      apply: [Function: bound apply],
      handleInitial: [Function: bound handleInitial],
      handleDone: [Function: bound handleDone],
      removeFiles: [Function: bound removeFiles]
    },
    D {
      options: {
        publishimo: [AsyncFunction (anonymous)],
        filename: 'package.json',
        format: false,
        autoMain: true,
        autoTypes: false,
        banner: false,
        unicodeCopyright: true,
        productionOnly: true,
        debugFolder: null,
        incudeFields: [],
        excludeFields: [],
        json5: false,
        autoExclude: false,
        includeDefaultBinName: true,
        includeFields: [ 'type' ]
      }
    },
    d { options: { defaultLicense: 'MIT' } },
    CopyPlugin {
      patterns: [
        { from: 'readme.*', noErrorOnMissing: true },
        { from: 'license.*', noErrorOnMissing: true }
      ],
      options: {}
    },
    IgnorePlugin {
      options: { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ },
      checkIgnore: [Function: bound checkIgnore]
    }
  ],
  output: {
    filename: '[name].js',
    chunkFilename: '[name].js',
    assetModuleFilename: '[contenthash][ext][query]',
    path: 'D:\\git\\epoch-seconds\\dist\\package\\production',
    module: true,
    chunkFormat: 'module',
    chunkLoading: 'import',
    hashDigest: 'base64url',
    hashDigestLength: 8,
    library: { type: 'module' }
  },
  stats: {
    all: false,
    assets: true,
    assetsSort: '!size',
    excludeAssets: /.(map|d.ts)$/,
    colors: true,
    warnings: true,
    errors: true,
    errorDetails: true
  },
  performance: { maxEntrypointSize: 4000000, maxAssetSize: 4000000 },
  experiments: { outputModule: true, topLevelAwait: true, futureDefaults: true },
  externals: [AsyncFunction (anonymous)],
  target: 'web'
}

Output (processed by Webpack)

{
  amd: undefined,
  bail: undefined,
  cache: false,
  context: 'D:\\git\\epoch-seconds',
  dependencies: undefined,
  devServer: undefined,
  devtool: 'source-map',
  entry: { index: { import: [ 'D:\\git\\epoch-seconds\\src\\index.js' ] } },
  experiments: {
    outputModule: true,
    topLevelAwait: true,
    futureDefaults: true,
    buildHttp: undefined,
    lazyCompilation: undefined,
    css: { exportsOnly: false },
    backCompat: false,
    syncWebAssembly: false,
    asyncWebAssembly: true,
    layers: false,
    cacheUnaffected: true
  },
  externals: [AsyncFunction (anonymous)],
  externalsPresets: {
    web: true,
    node: false,
    nwjs: false,
    electron: false,
    electronMain: false,
    electronPreload: false,
    electronRenderer: false
  },
  externalsType: 'module',
  ignoreWarnings: undefined,
  infrastructureLogging: {
    stream: <ref *1> WriteStream {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: null,
      _closeAfterHandlingError: false,
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 0,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: true,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        dataEmitted: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] { end: [Function: onReadableStreamEnd] },
      _eventsCount: 1,
      _maxListeners: undefined,
      _writableState: <ref *2> WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        afterWriteTickInfo: {
          count: 13,
          cb: [Function: nop],
          stream: [Circular *1],
          state: [Circular *2]
        },
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 13,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: false,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      columns: 114,
      rows: 72,
      _type: 'tty',
      fd: 2,
      _isStdio: true,
      destroySoon: [Function: destroy],
      _destroy: [Function: dummyDestroy],
      [Symbol(async_id_symbol)]: 9,
      [Symbol(kHandle)]: TTY { [Symbol(owner_symbol)]: [Circular *1] },
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: false,
      [Symbol(kSetKeepAliveInitialDelay)]: 0,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0
    },
    level: 'info',
    debug: false,
    colors: true,
    appendOnly: false
  },
  loader: {
    target: 'web',
    environment: {
      globalThis: undefined,
      bigIntLiteral: undefined,
      const: true,
      arrowFunction: true,
      forOf: true,
      destructuring: true,
      optionalChaining: true,
      templateLiteral: true,
      dynamicImport: true,
      dynamicImportInWorker: true,
      module: true
    }
  },
  mode: 'production',
  module: {
    noParse: undefined,
    unsafeCache: false,
    parser: {
      javascript: {
        unknownContextRequest: '.',
        unknownContextRegExp: false,
        unknownContextRecursive: true,
        unknownContextCritical: true,
        exprContextRequest: '.',
        exprContextRegExp: false,
        exprContextRecursive: true,
        exprContextCritical: true,
        wrappedContextRegExp: /.*/,
        wrappedContextRecursive: true,
        wrappedContextCritical: false,
        strictExportPresence: undefined,
        strictThisContextOnImports: false,
        importMeta: true,
        importMetaContext: true,
        dynamicImportMode: 'lazy',
        dynamicImportPrefetch: false,
        dynamicImportPreload: false,
        dynamicImportFetchPriority: false,
        createRequire: false,
        exportsPresence: 'error'
      },
      asset: { dataUrlCondition: { maxSize: 8096 } }
    },
    generator: {},
    defaultRules: [
      { mimetype: 'application/node', type: 'javascript/auto' },
      { test: /\.json$/i, type: 'json' },
      { mimetype: 'application/json', type: 'json' },
      {
        test: /\.mjs$/i,
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      {
        test: /\.js$/i,
        descriptionData: { type: 'module' },
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      { test: /\.cjs$/i, type: 'javascript/dynamic' },
      {
        test: /\.js$/i,
        descriptionData: { type: 'commonjs' },
        type: 'javascript/dynamic'
      },
      {
        mimetype: { or: [ 'text/javascript', 'application/javascript' ] },
        type: 'javascript/esm',
        resolve: { byDependency: { esm: { fullySpecified: true } } }
      },
      {
        test: /\.wasm$/i,
        type: 'webassembly/async',
        rules: [
          {
            descriptionData: { type: 'module' },
            resolve: { fullySpecified: true }
          }
        ]
      },
      {
        mimetype: 'application/wasm',
        type: 'webassembly/async',
        rules: [
          {
            descriptionData: { type: 'module' },
            resolve: { fullySpecified: true }
          }
        ]
      },
      {
        test: /\.css$/i,
        type: 'css/auto',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        mimetype: 'text/css+module',
        type: 'css/module',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        mimetype: 'text/css',
        type: 'css',
        resolve: { fullySpecified: true, preferRelative: true }
      },
      {
        dependency: 'url',
        oneOf: [
          { scheme: /^data$/, type: 'asset/inline' },
          { type: 'asset/resource' }
        ]
      },
      { assert: { type: 'json' }, type: 'json' }
    ],
    rules: [
      {
        test: /\.(js|jsx|ts|tsx)$/,
        oneOf: [
          {
            include: 'D:\\git\\epoch-seconds\\src',
            loader: 'babel-loader'
          }
        ]
      },
      { test: /\.(yaml|yml)$/, loader: 'yml-loader' },
      { test: /\.lines$/, loader: 'lines-loader' },
      {
        test: /\.rlines$/,
        loader: 'lines-loader',
        options: { sort: true, random: true }
      },
      { test: /\.txt$/, type: 'asset/source' },
      { resourceQuery: /\?raw$/, type: 'asset/source' },
      {
        test: /\.(hbs|handlebars)$/,
        oneOf: [
          { resourceQuery: /\?html/, loader: 'handlebars-loader' },
          {
            loader: 'handlebars-loader',
            options: { precompileOptions: { noEscape: true } }
          }
        ]
      }
    ]
  },
  name: 'main',
  node: { global: 'warn', __filename: 'warn-mock', __dirname: 'warn-mock' },
  optimization: {
    chunkIds: 'deterministic',
    concatenateModules: true,
    mangleExports: 'size',
    removeAvailableModules: true,
    runtimeChunk: { name: [Function (anonymous)] },
    splitChunks: {
      chunks: 'async',
      cacheGroups: {
        defaultVendors: {
          test: /[/\\]node_modules[/\\]/,
          name: 'vendor',
          chunks: 'all'
        },
        default: {
          idHint: '',
          reuseExistingChunk: true,
          minChunks: 2,
          priority: -20
        }
      },
      defaultSizeTypes: [ 'javascript', 'css', 'unknown' ],
      hidePathInfo: true,
      usedExports: true,
      minChunks: 1,
      minSize: 20000,
      minRemainingSize: undefined,
      enforceSizeThreshold: 50000,
      maxAsyncRequests: 30,
      maxInitialRequests: 30,
      automaticNameDelimiter: '-'
    },
    minimizer: [
      TerserPlugin {
        options: {
          test: /\.[cm]?js(\?.*)?$/i,
          extractComments: false,
          parallel: true,
          include: undefined,
          exclude: undefined,
          minimizer: {
            implementation: [AsyncFunction: terserMinify] {
              getMinimizerVersion: [Function (anonymous)]
            },
            options: {
              compress: {
                passes: 1,
                unsafe_comps: true,
                unsafe_math: true,
                unsafe_regexp: true,
                unsafe_undefined: true
              },
              output: { ecma: 2019, comments: [Function: comments] },
              toplevel: true,
              module: true
            }
          }
        }
      }
    ],
    emitOnErrors: false,
    removeEmptyChunks: true,
    mergeDuplicateChunks: true,
    flagIncludedChunks: true,
    moduleIds: 'deterministic',
    sideEffects: true,
    providedExports: true,
    usedExports: true,
    innerGraph: true,
    checkWasmTypes: true,
    mangleWasmImports: false,
    portableRecords: false,
    realContentHash: true,
    minimize: true,
    nodeEnv: 'production'
  },
  output: {
    assetModuleFilename: '[contenthash][ext][query]',
    asyncChunks: true,
    charset: true,
    chunkFilename: '[name].js',
    chunkFormat: 'module',
    chunkLoading: 'import',
    chunkLoadingGlobal: 'webpackChunkepoch_seconds',
    chunkLoadTimeout: 120000,
    cssFilename: '[name].css',
    cssChunkFilename: '[name].css',
    clean: undefined,
    compareBeforeEmit: true,
    crossOriginLoading: false,
    devtoolFallbackModuleFilenameTemplate: undefined,
    devtoolModuleFilenameTemplate: undefined,
    devtoolNamespace: 'epoch-seconds',
    environment: {
      globalThis: undefined,
      bigIntLiteral: undefined,
      const: true,
      arrowFunction: true,
      forOf: true,
      destructuring: true,
      optionalChaining: true,
      templateLiteral: true,
      dynamicImport: true,
      dynamicImportInWorker: true,
      module: true
    },
    enabledChunkLoadingTypes: [ 'import' ],
    enabledLibraryTypes: [ 'module' ],
    enabledWasmLoadingTypes: [ 'fetch' ],
    filename: '[name].js',
    globalObject: 'self',
    hashDigest: 'base64url',
    hashDigestLength: 8,
    hashFunction: 'xxhash64',
    hashSalt: undefined,
    hotUpdateChunkFilename: '[id].[fullhash].hot-update.mjs',
    hotUpdateGlobal: 'webpackHotUpdateepoch_seconds',
    hotUpdateMainFilename: '[runtime].[fullhash].hot-update.json',
    ignoreBrowserWarnings: undefined,
    iife: false,
    importFunctionName: 'import',
    importMetaName: 'import.meta',
    scriptType: 'module',
    library: {
      type: 'module',
      auxiliaryComment: undefined,
      amdContainer: undefined,
      export: undefined,
      name: undefined,
      umdNamedDefine: undefined
    },
    module: true,
    path: 'D:\\git\\epoch-seconds\\dist\\package\\production',
    pathinfo: false,
    publicPath: 'auto',
    sourceMapFilename: '[file].map[query]',
    sourcePrefix: undefined,
    strictModuleExceptionHandling: false,
    trustedTypes: undefined,
    uniqueName: 'epoch-seconds',
    wasmLoading: 'fetch',
    webassemblyModuleFilename: '[hash].module.wasm',
    workerPublicPath: '',
    workerChunkLoading: false,
    workerWasmLoading: 'fetch'
  },
  parallelism: 100,
  performance: {
    maxEntrypointSize: 4000000,
    maxAssetSize: 4000000,
    hints: 'warning'
  },
  plugins: [
    CLIPlugin {
      options: {
        configPath: 'D:\\git\\epoch-seconds\\webpack.config.js',
        helpfulOutput: true,
        hot: undefined,
        progress: undefined,
        prefetch: undefined,
        analyze: undefined
      },
      logger: WebpackLogger {
        getChildLogger: [Function (anonymous)],
        [Symbol(webpack logger raw log method)]: [Function (anonymous)]
      }
    },
    LoaderOptionsPlugin {
      options: {
        debug: false,
        minimize: true,
        test: { test: [Function: test] }
      }
    },
    CleanWebpackPlugin {
      dangerouslyAllowCleanPatternsOutsideProject: false,
      dry: false,
      verbose: false,
      cleanStaleWebpackAssets: true,
      protectWebpackAssets: true,
      cleanAfterEveryBuildPatterns: [],
      cleanOnceBeforeBuildPatterns: [ 'D:\\git\\epoch-seconds\\dist\\package\\production' ],
      currentAssets: [],
      initialClean: false,
      outputPath: 'D:\\git\\epoch-seconds\\dist\\package\\production',
      apply: [Function: bound apply],
      handleInitial: [Function: bound handleInitial],
      handleDone: [Function: bound handleDone],
      removeFiles: [Function: bound removeFiles]
    },
    D {
      options: {
        publishimo: [AsyncFunction (anonymous)],
        filename: 'package.json',
        format: false,
        autoMain: true,
        autoTypes: false,
        banner: false,
        unicodeCopyright: true,
        productionOnly: true,
        debugFolder: null,
        incudeFields: [],
        excludeFields: [],
        json5: false,
        autoExclude: false,
        includeDefaultBinName: true,
        includeFields: [ 'type' ]
      }
    },
    d { options: { defaultLicense: 'MIT' } },
    CopyPlugin {
      patterns: [
        { from: 'readme.*', noErrorOnMissing: true },
        { from: 'license.*', noErrorOnMissing: true }
      ],
      options: {}
    },
    IgnorePlugin {
      options: { resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ },
      checkIgnore: [Function: bound checkIgnore]
    },
  ],
  profile: false,
  recordsInputPath: false,
  recordsOutputPath: false,
  resolve: {
    byDependency: {
      wasm: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      esm: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      loaderImport: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      worker: {
        conditionNames: [ 'import', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ],
        preferRelative: true
      },
      commonjs: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      amd: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      loader: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      unknown: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      undefined: {
        conditionNames: [ 'require', 'module', '...' ],
        extensions: [ '.js', '.json', '.wasm' ],
        aliasFields: [ 'browser' ],
        mainFields: [ 'browser', 'module', '...' ]
      },
      'css-import': {
        conditionNames: [ 'webpack', 'production', 'style' ],
        mainFiles: [],
        extensions: [ '.css' ],
        mainFields: [ 'style', '...' ]
      },
      url: { preferRelative: true }
    },
    cache: false,
    modules: [ 'node_modules' ],
    conditionNames: [ 'webpack', 'production', 'browser' ],
    mainFiles: [ 'index' ],
    extensions: [],
    aliasFields: [],
    exportsFields: [ 'exports' ],
    roots: [ 'D:\\git\\epoch-seconds' ],
    mainFields: [ 'main' ]
  },
  resolveLoader: {
    cache: false,
    conditionNames: [ 'loader', 'require', 'node' ],
    exportsFields: [ 'exports' ],
    mainFields: [ 'loader', 'main' ],
    extensions: [ '.js' ],
    mainFiles: [ 'index' ]
  },
  snapshot: {
    resolveBuildDependencies: { timestamp: true, hash: true },
    buildDependencies: { timestamp: true, hash: true },
    resolve: { timestamp: true, hash: true },
    module: { timestamp: true, hash: true },
    immutablePaths: [],
    managedPaths: [ /^(.+?[\\/]node_modules[\\/])/ ]
  },
  stats: {
    all: false,
    assets: true,
    assetsSort: '!size',
    excludeAssets: /.(map|d.ts)$/,
    colors: true,
    warnings: true,
    errors: true,
    errorDetails: true
  },
  target: 'web',
  watch: false,
  watchOptions: {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment