‚̧Neverending Pile of Messages
    Wondering what‚Äôs next for npm?Check out our public roadmap! ¬Ľ

    @ndelangen/extract-text-webpack-plugin

    2.0.0¬†‚Äʬ†Public¬†‚Äʬ†Published

    extract text plugin for webpack

    Usage example with css

    var ExtractTextPlugin = require("extract-text-webpack-plugin");
    module.exports = {
        module: {
            loaders: [
                { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }
            ]
        },
        plugins: [
            new ExtractTextPlugin("styles.css")
        ]
    }

    It moves every require("style.css") in entry chunks into a separate css output file. So your styles are no longer inlined into the javascript, but separate in a css bundle file (styles.css). If your total stylesheet volume is big, it will be faster because the stylesheet bundle is loaded in parallel to the javascript bundle.

    Advantages:

    • Fewer style tags (older IE has a limit)
    • CSS SourceMap (with devtool: "source-map" and css-loader?sourceMap)
    • CSS requested in parallel
    • CSS cached separate
    • Faster runtime (less code and DOM operations)

    Caveats:

    • Additional HTTP request
    • Longer compilation time
    • More complex configuration
    • No runtime public path modification
    • No Hot Module Replacement

    API

    new ExtractTextPlugin([id: string], filename: string, [options])
    • id Unique ident for this plugin instance. (For advanded usage only, by default automatic generated)
    • filename the filename of the result file. May contain [name], [id] and [contenthash].
      • [name] the name of the chunk
      • [id] the number of the chunk
      • [contenthash] a hash of the content of the extracted file
    • options
      • allChunks extract from all additional chunks too (by default it extracts only from the initial chunk(s))
      • disable disables the plugin

    The ExtractTextPlugin generates an output file per entry, so you must use [name], [id] or [contenthash] when using multiple entries.

    ExtractTextPlugin.extract([notExtractLoader], loader, [options])

    Creates an extracting loader from an existing loader.

    • notExtractLoader (optional) the loader(s) that should be used when the css is not extracted (i.e. in an additional chunk when allChunks: false)
    • loader the loader(s) that should be used for converting the resource to a css exporting module.
    • options
      • publicPath override the publicPath setting for this loader.

    There is also an extract function on the instance. You should use this if you have more than one ExtractTextPlugin.

    let ExtractTextPlugin = require('extract-text-webpack-plugin');
     
    // multiple extract instances
    let extractCSS = new ExtractTextPlugin('stylesheets/[name].css');
    let extractLESS = new ExtractTextPlugin('stylesheets/[name].less');
     
    module.exports = {
      ...
      module: {
        loaders: [
          {test: /\.scss$/i, loader: extractCSS.extract(['css','sass'])},
          {test: /\.less$/i, loader: extractLESS.extract(['css','less'])},
          ...
        ]
      },
      plugins: [
        extractCSS,
        extractLESS
      ]
    };

    License

    MIT (http://www.opensource.org/licenses/mit-license.php)

    Keywords

    none

    Install

    npm i @ndelangen/extract-text-webpack-plugin

    DownloadsWeekly Downloads

    1

    Version

    2.0.0

    License

    MIT

    Last publish

    Collaborators

    • avatar