Introducing webpack asset modules
hiroppy
This slide is here!

Asset Modules
asset is a new module type.
Current Module types are javascript/auto, javascript/esm, json, and webassembly.
webpack@5 has raw-loader, file-loader, and url-loader as a native feature so unnecessary to install these loaders manually.
- asset/resource-> file-loader
- asset/inline-> url-loader
- asset/source-> raw-loader
- asset-> fallback option of url-loader
// webpack.config.js
module.exports = {
  output: {
    assetModuleFilename: 'images/[hash][ext]',
  },
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        type: 'asset/resource',
      },
      {
        test: /\.txt/,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            maxSize: 4 * 1024, // 4kb
          },
        },
      },
    ],
  },
  experiments: {
    asset: true,
  },
};
import foo from './images/foo.png';
console.log(foo);
// /dist/images/151cfcfa1bd74779aadb.png