Loader Back

Description

Loaders are transformations that are applied on a resource file of your app. For example, you can use loaders to tell webpack to load CoffeeScript or JSX

Usage

There are some ways to use loaders:

  • explicit in the require statement
  • configured via configuration
  • configured via CLI

Loader can be passed query parameters via a query string (just like in the web). The query string is appended to the loader with ?. i.e. url-loader?mimetype=image/png.

Loaders in require

Note:A void using this, if at all possible, if you intend your scripts to be environment agnostic (node.js and browser). Use the configuration convention for specifying loaders.

Just separate loaders from resource with !. Each part is resolved relative to the current directory.

require("./loader!./dir/file.txt");
// => uses the file "loader.js" in the current directory to transform
//    "file.txt" in the folder "dir".

require("jade!./template.jade");
// => uses the "jade-loader" (that is installed from npm to "node_modules")
//    to transform the file "template.jade"
//    If configuration has some transforms bound to the file, they will still be applied.

require("!style!css!less!bootstrap/less/bootstrap.less");
// => the file "bootstrap.less" in the folder "less" in the "bootstrap"
//    module (that is installed from github to "node_modules") is
//    transformed by the "less-loader". The result is transformed by the
//    "css-loader" and then by the "style-loader".
//    If configuration has some transforms bound to the file, they will not be applied.

require("url-loader?mimetype=image/png!file.png");

Configuration

module.exports = {
    entry: './src/app.js',
    output: {
        path: './bin',
        filename: 'app.bundle.js'
    },
    module: {
        loaders: [
            { test: /\.jade$/, loader: "jade" },
            // => "jade" loader is used for ".jade" files

            { test: /\.css$/, loader: "style!css" },
            // => "style" and "css" loader is used for ".css" files
            // Alternative syntax:
            { test: /\.css$/, loaders: ["style", "css"] },

            { test: /\.png$/, loader: "url-loader?mimetype=image/png" },
            /** or */
            {
                test: /\.png$/,
                loader: "url-loader",
                query: { mimetype: "image/png" }
            }
        ]
    }
};

CLI

webpack --module-bind jade --module-bind 'css=style!css' --module-bind "png=url-loader?mimetype=image/png"

Lists of Loaders

basic

  • json: Loads file as JSON
  • hson: Loads HanSON file (JSON for Humans) as JSON object
  • raw: Loads raw content of a file (as utf-8)
  • val: Executes code as module and consider exports as JavaScript code
  • to-string: Executes code as a module, casts output to a string and exports it
  • imports: Imports stuff to the module
  • exports: Exports stuff from the module
  • expose: Expose exports from a module to the global context
  • script: Executes a JavaScript file once in global context (like in script tag), requires are not parsed.
  • apply: Executes a exported JavaScript function, optionally with arguments, and exports its return value.
  • callback: Parses your JS, calls specified functions (which you implement in webpack context) and replaces them with the results
  • if-loader: This is a preprocesser for the webpack module bundler. It support the if directive,similar to C #ifdef .
  • ifdef-loader: Preprocessor for .js/.ts files that allows conditional compilation via // #if and // #endif, while preserving sourcemaps.
  • source-map: Extract sourceMappingURL comments from modules and offer it to webpack
  • checksum: Computes the checksum of a file
  • null: Emits an empty module.
  • cowsay: Emits a module with a cowsay header.
  • dsv: Loads csv/tsv files.
  • glsl: Loads glsl files and support glsl-chunks.
  • render-placement: Adds React.render to your component for you (not very practical in most cases)
  • xml: Loads XML as JSON.
  • svg-react: Load SVG files as JSX-ified React.createClass declarations.
  • svg-url: Loads SVG file as utf-8 encoded data:URI string.
  • svg-as-symbol: Wraps content of root element of source SVG file inside symbol element and returns resulting markup.
  • base64: Loads file content as base64 string
  • ng-annotate: A loader to annotate dependency injections in Angular.js applications.
  • node: Loads .node files that are produced using node-gyp.
  • required: Require a whole directory of trees in bulk. Require JS, Import CSS and imports stuff in it.
  • icons Generates iconfont from .svg files (uses gulp-iconfont)
  • markup-inline Inline SVGs to HTML. It's very useful when applying icon font or applying CSS animation to SVG.
  • block-loader Generic loader for rewriting only parts of files, based on content start/end delimiters.
  • bundler-configuration Bundler configuration loader, a tool to include bundler configuration in the resulting build.
  • console: Prints the resolved require of webpack to the console.
  • solc: Compiles Solidity code (.sol) and returns JavaScript objects with Application Binary Interface (ABI) and bytecode ready for deployment to Ethereum.
  • web3: Deploys Ethereum VM bytecode and returns ready-to-use JS instances of deployed smart contracts. Also returns initialized Web3 object.
  • includes: Load any text file and support nested includes
  • combine: Combine results from multiple loaders into one object
  • regexp-replace: Replace RegExp matches with a string

packaging

  • file: Emits the file into the output folder and returns the (relative) url.
  • url: The url loader works like the file loader, but can return a Data Url if the file is smaller than a limit.
  • extract: Prepares HTML and CSS modules to be extracted into a separate file (lean alternative to the ExtractTextWebpackPlugin).
  • worker: The worker loader creates a WebWorker for the provided file. The bundling of dependencies of the Worker is transparent.
  • shared-worker: Like the worker loader, but for Shared Workers.
  • serviceworker: Like the worker loader, but designed for Service Workers.
  • bundle: Wraps request in a require.ensure block (callback)
  • promise: Wraps request in a require.ensure block (promise)
  • async-module: Same as bundle, but provides a way to handle script loading errors. Wraps request in a require.ensure block (callback, errback)
  • react-proxy: Code Splitting for react components.
  • react-hot: Allows to live-edit React components while keeping them mounted and preserving their state.
  • image: Compresses your images. Ideal to use together with file or url.
  • img: Load and compress images with imagemin.
  • base64-image: Load image as base64 string src
  • responsive: Create multiple resized images for use with srcset and CSS media queries
  • svgo: Compresses SVG images using svgo library
  • svg-sprite: Like style-loader but for SVG: it creates a single SVG sprite from a set of images, appends it to DOM and returns relative symbol url to be used with svg's <use>.
  • svg-fill: Changes colors in SVG images. Useful when you embed SVG in CSS as background image and don't want to produce tons of identical files which only differ in their fill attributes.
  • line-art: Inlines SVG files, converting all of its nodes to paths. Useful for line art animations in React components.
  • baggage: Automatically require any resources related to the required one
  • polymer: Process HTML & CSS with preprocessor of choice and require() Web Components like first-class modules.
  • uglify: Uglify contents of a module. Unlike uglify plugin you can minify with mangling only your application files and not the libraries
  • html-minify: Minifies HTML using minimize
  • vue: Load single-file Vue.js components as modules, with loader-support for preprocessors.
  • tojson Serialize module exports as JSON. Cache generated static data as JSON at build time.
  • zip-it Convert files and directories to zip. Great with file.
  • lzstring Compresses large strings inline using lz-string, and decompresses them at runtime
  • modernizr Get your modernizr build bundled with webpack
  • s3 Pull assets from s3 based on filename, path, and desired environment.
  • path-replace Replace a given base path with another path for dynamic module loading
  • react-intl Loads react-intl locale data via require.ensure
  • font-subset: Loads a transformed font resource that contains only a specified subset of glyphs with all other glyphs stripped out.
  • w3c-manifest: Loads a WebApp manifest.json file.
  • web-app-manifest: Load images referenced in the icons and splash_screens fields in a Web App Manifest.
  • manifest-scope: Sets the scope of a web app manifest to the public path.

dialects (方言)

  • coffee: Loads coffee-script like JavaScript
  • coffee-jsx: Loads coffee-script with JSX like JavaScript
  • coffee-redux: Loads coffee-script like JavaScript
  • json5: Like json, but not so strict.
  • es6: Loads ES6 modules. (old)
  • esnext: Transpile ES6 code using esnext.
  • babel: Turn ES6 code into vanilla ES5 using Babel.
  • regenerator: Use ES6 generators via Facebook's Regenerator module.
  • livescript: Loads LiveScript like JavaScript
  • sweetjs: Use sweetjs macros.
  • traceur: Use future JavaScript features with Traceur.
  • ts: Loads TypeScript like JavaScript.
  • typescript: Loads TypeScript like JavaScript.
  • awesome-typescript: Loads TypeScript like JavaScript with watching support. Works with TypeScript 1.5-alfa
  • webpack-typescript: Loads TypeScript like JavaScript. Supports watch mode and source maps. Works with TypeScript 1.5, 1.6, and nightly builds of TypeScript 1.7 and 1.8.
  • purs: Loads PureScript like JavaScript.
  • oj: Loads OJ (an Objective-C like language) files and compiles them to plain JavaScript.
  • elm-webpack: Loads Elm files and compiles them to plain JavaScript.
  • miel: Loads Miel syntax and compiles to JavaScript.
  • wisp: Loads Wisp modules and compiles them to JavaScript.
  • sibilant: Loads Sibilant files and compiles them to JavaScript.

templating

  • html: Exports HTML as string, require references to static resources.
  • dom: Exports HTML in a DOM element container.
  • riot: Load RiotJS tags and convert them to javascript.
  • pug: Loads Pug/Jade template and returns a function
  • jade-html: Loads Jade template and returns generated HTML
  • jade-react: Uses Jade templates for React rendering instead of JSX
  • virtual-jade: Use Jade templates to produce virtual-dom hyperscript output
  • template-html: Loads any template with consolidate.js and returns generated HTML
  • handlebars: Loads handlebars template and returns a function
  • handlebars-template-loader: Loads handlebars template and returns a function (alternative)
  • dust: Loads dust template and returns a function
  • ractive: Pre-compiles Ractive templates for interactive DOM manipulation
  • jsx: Transform jsx code for React to js code.
  • react-templates: Loads react-template and returns a function
  • em: Compiles Emblem to Handlebars.js
  • ejs: Loads EJS (underscore( templating engine) template and returns a pre-compiled function
  • ejs-html: Loads EJS templates and returns generated HTML.
  • mustache: Pre-compiles Mustache templates with Hogan.js and returns a function
  • yaml: Converts YAML to JSON
  • yml: Converts YAML to JavaScript object, optionally omitting blacklisted keys
  • react-markdown: Compiles Markdown to a React Component using the markdown-parse parser
  • front-matter: Extracts YAML frontmatter
  • markdown: Compiles Markdown to HTML
  • remarkable: Compiles Markdown to HTML using the Remarkable parser
  • markdown-it: Compiles Markdown to HTML using the markdown-it parser
  • markdownattrs: Compiles Markdown to HTML using the markdown-it-attrs parser that allows you to set classes, identifiers and attributes to your markdown.
  • ng-cache: Puts HTML partials in the Angular's $templateCache
  • ngtemplate: Bundles your AngularJS templates and Pre-loads the template cache.
  • hamlc: Compiles haml-coffee templates (.hamlc) and returns a function.
  • haml: Renders haml-coffee templates (.html.hamlc) and returns a string.
  • jinja: Precompiles nunjucks and jinja2 templates
  • nunjucks: Precompiles nunjucks templates
  • soy: Compiles Google Closure templates and returns the namespace with render functions
  • smarty: Pre-compiles php smarty templates and returns a function
  • swagger: Compiles Swagger/OpenAPI JSON and YAML specifications.
  • template-string: Use ES6 template strings for html templates
  • ect: Compile ectjs templates
  • tmodjs: Load art-template , a template-engine that is widely used in China.
  • layout: You can use require directly in html now!
  • swig: Webpack Swig loader
  • twig: Webpack Twig.js loader

styling

  • bootstrap-webpack: Loads a configuration file for Twitter Bootstrap integration using Less. Allows complete customisation via Less.
  • font-awesome-webpack: Loads a configuration file for Font Awesome integration using Less. Allows complete customisation via Less.
  • bootstrap-sass: Deprecated. See bootstrap.
  • bootstrap: Loads a configuration file for Twitter Bootstrap integration using Sass. Allows complete customization via Sass. Supports CSS modules and both Bootstrap 3 and 4.
  • font-awesome: Easy integration of font-awesome with customization via Sass.
  • style: Add exports of a module as style to DOM
  • isomorphic-style: Ad-hoc replacement to style-loader adding support of isomorphic apps and critical path CSS
  • css: Loads css file with resolved imports and returns css code
  • cess: Loads and compile cess file (css in es6 js) to css
  • less: Loads and compiles a less file
  • sass: Loads and compiles a scss file
  • stylus: Loads and compiles a stylus file
  • csso: Minifies input CSS with CSSO
  • rework: Post-process CSS with Rework and returns CSS code
  • postcss: Post-process CSS with Autoprefixer and other PostCSS plugins
  • autoprefixer: Add vendor prefixes to CSS rules using values from Can I Use
  • namespace-css: Namespace your css with a given selector (for encapsulating all rules in one subset of your site)
  • fontgen: Create your own webfont with proper CSS on-the-fly and include it into WebPack.
  • classnames: Automatically bind css-modules to classnames.
  • theo Loads Design Tokens files transformed by theo
  • bulma Customize Bulma in your css-modules.
  • css-to-string Convert the output of the css-loader back to a string.

translation

  • po: Loads a PO gettext file and returns JSON
  • po2mo: Compiles gettext PO files to MO files
  • format-message: Compiles translations to ICU Message Format strings in formatMessage calls
  • jsxlate: Transform React source code for use with jsxlate
  • angular-gettext Compiles .po files as Angular.js module or json to be used with angular-gettext.
  • webpack-angular-translate: Extracts angular-translate translation id's and default text's
  • angular-gettext-extract Extracts strings for translation into a nominated .pot file.
  • gettext: Compiles a Gettext PO file from code source.
  • preprocessor: The preprocessor-loader provides the ability to preprocess source files through user defined regular expressions, macros, and callback routines. All user defined logic can be applied to line scope or source scope.
  • amdi18n-loader: I18n loader similar to require.js i18n plugin. The language packs support AMD/CommonJS module and can be written in .json / .js / .coffee files.
  • sprockets-preloader: Translate sprockets require directives into JavaScript module dependencies. Useful for migrating a Rails project to Webpack module bundling.
  • properties: Loader for .properties files.
  • transifex: Fetch imported translation files from transifex.

support

Empty Comments
Sign in GitHub

As the plugin is integrated with a code management system like GitLab or GitHub, you may have to auth with your account before leaving comments around this article.

Notice: This plugin has used Cookie to store your token with an expiration.