All Projects → vanwagonet → Img Loader

vanwagonet / Img Loader

Licence: mit
Image minimizing loader for webpack

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Img Loader

Mina Webpack
🍱 Mina single-file-component meets Webpack
Stars: ✭ 77 (-52.17%)
Mutual labels:  webpack, loader
Vue Svg Inline Loader
Webpack loader used for inline replacement of SVG images with actual content of SVG files in Vue projects.
Stars: ✭ 105 (-34.78%)
Mutual labels:  webpack, loader
Grow Loader
A webpack loader to split class methods by decorators
Stars: ✭ 89 (-44.72%)
Mutual labels:  webpack, loader
Node Native Ext Loader
Loader for Node native extensions
Stars: ✭ 51 (-68.32%)
Mutual labels:  webpack, loader
Aot Loader
⚠️ [Deprecated] Ahead-of-Time Compiler for Webpack.
Stars: ✭ 121 (-24.84%)
Mutual labels:  webpack, loader
Eslint Loader
[DEPRECATED] A ESlint loader for webpack
Stars: ✭ 1,067 (+562.73%)
Mutual labels:  webpack, loader
Webpack Fast Refresh
React Fast Refresh plugin and loader for webpack
Stars: ✭ 155 (-3.73%)
Mutual labels:  webpack, loader
Wasm Loader
✨ WASM webpack loader
Stars: ✭ 604 (+275.16%)
Mutual labels:  webpack, loader
Style Loader
Style Loader
Stars: ✭ 1,572 (+876.4%)
Mutual labels:  webpack, loader
Sass Vars Loader
Use Sass variables defined in Webpack config or in external Javascript or JSON files
Stars: ✭ 112 (-30.43%)
Mutual labels:  webpack, loader
Svgr
Transform SVGs into React components 🦁
Stars: ✭ 8,263 (+5032.3%)
Mutual labels:  webpack, loader
Workflow
一个工作流平台
Stars: ✭ 1,888 (+1072.67%)
Mutual labels:  webpack, loader
Thread Loader
Runs the following loaders in a worker pool
Stars: ✭ 945 (+486.96%)
Mutual labels:  webpack, loader
Extracted Loader
It reloads extracted stylesheets extracted with ExtractTextPlugin
Stars: ✭ 67 (-58.39%)
Mutual labels:  webpack, loader
Stylefmt Loader
Webpack-loader. Fixes stylelint issues automatically while bundling with Webpack.
Stars: ✭ 24 (-85.09%)
Mutual labels:  webpack, loader
Fe Blog
前端学习笔记,JavaScript基础,LeetCode,手写API,Vue源码解析,前端面试题
Stars: ✭ 99 (-38.51%)
Mutual labels:  webpack, loader
Angular Hmr
🔥 Angular Hot Module Replacement for Hot Module Reloading
Stars: ✭ 490 (+204.35%)
Mutual labels:  webpack, loader
React Imported Component
✂️📦Bundler-independent solution for SSR-friendly code-splitting
Stars: ✭ 525 (+226.09%)
Mutual labels:  webpack, loader
Node Hot Loader
Hot module replacement (hot reload) for Node.js applications. Develop without server restarting.
Stars: ✭ 111 (-31.06%)
Mutual labels:  webpack, loader
Omil
📝Webpack loader for Omi.js React.js and Rax.js components 基于 Omi.js,React.js 和 Rax.js 单文件组件的webpack模块加载器
Stars: ✭ 140 (-13.04%)
Mutual labels:  webpack, loader

img-loader

npm Version MIT License

Image minimizing loader for webpack 4, meant to be used with url-loader, file-loader, or raw-loader

Minify PNG, JPEG, GIF and SVG images with imagemin plugins

img-loader has a peer dependency on imagemin, so you will need to make sure to include that, along with any imagemin plugins you will use.

Install

$ npm install img-loader --save-dev

Usage

Documentation: Using loaders

module: {
  rules: [
    {
      test: /\.(jpe?g|png|gif|svg)$/i,
      use: [
        'url-loader?limit=10000',
        'img-loader'
      ]
    }
  ]
}

By default the loader simply passes along the image unmodified.

Options

Options are forwarded to imagemin.buffer(image, options), so any plugins you would like to use for optimizing the images are passed as the plugins property.

For more details on each plugin's options, see their documentation on Github.

{
  module: {
    rules: [
      {
        test: /\.(jpe?g|png|gif|svg)$/i,
        use: [
          'url-loader?limit=10000',
          {
            loader: 'img-loader',
            options: {
              plugins: [
                require('imagemin-gifsicle')({
                  interlaced: false
                }),
                require('imagemin-mozjpeg')({
                  progressive: true,
                  arithmetic: false
                }),
                require('imagemin-pngquant')({
                  floyd: 0.5,
                  speed: 2
                }),
                require('imagemin-svgo')({
                  plugins: [
                    { removeTitle: true },
                    { convertPathData: false }
                  ]
                })
              ]
            }
          }
        ]
      }
    ]
  }
}

plugins can also be a function, which will receive the webpack loader context and should return the plugins array.

{
  module: {
    rules: [
      {
        test: /\.(jpe?g|png|gif|svg)$/i,
        use: [
          'url-loader?limit=10000',
          {
            loader: 'img-loader',
            options: {
              plugins (context) {
                if (process.env.NODE_ENV === 'production') return []
                return [
                  require('imagemin-svgo')({
                    plugins: [
                      { cleanupIDs: false },
                      {
                        prefixIds: {
                          prefix: path.basename(context.resourcePath, 'svg')
                        }
                      }
                    ]
                  })
                ]
              }
            }
          }
        ]
      }
    ]
  }
}

If you only want to run imagemin in production builds, you can omit the img-loader or leave plugins empty in your production configuration file. If you don't keep a separate configuration for prod builds, something like the following also works:

{
  loader: 'img-loader',
  options: {
    plugins: process.env.NODE_ENV === 'production' && [
      require('imagemin-svgo')({})
      // etc.
    ]
  }
}

Migrating from 2.x

To get the default behavior from version 2.0.1, you'll need to install these imagemin plugins:

Then use this loader setup in your webpack configuration file:

{
  loader: 'img-loader',
  options: {
    plugins: [
      require('imagemin-gifsicle')({}),
      require('imagemin-mozjpeg')({}),
      require('imagemin-optipng')({}),
      require('imagemin-svgo')({})
    ]
  }
}

The options object you had under a plugin's name property, should instead be passed directly to the plugin after you require it.

If you used the optional pngquant settings, then you will additionally need to install imagemin-pngquant, and add it to your plugins array as any other imagemin plugin.

License

This software is free to use under the MIT license. See the LICENSE-MIT file for license text and copyright information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].