@taion/extract-text-webpack-plugin
extract text plugin for webpack 2
The API has changed since version 1. For the webpack 1 version, see the README in the webpack-1 branch.
Install
npm install --save-dev extract-text-webpack-plugin
or
yarn add --dev extract-text-webpack-plugin
Usage example with css
var ExtractTextPlugin = ;moduleexports =module:loaders:test: /\.css$/ loader: ExtractTextPluginplugins:"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"
andcss-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
options: filename | object
options.filename: string
(required) 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: boolean
extract from all additional chunks too (by default it extracts only from the initial chunk(s))options.disable: boolean
disables the pluginoptions.id: string
Unique ident for this plugin instance. (For advanced usage only, by default automatically generated)
The ExtractTextPlugin
generates an output file per entry, so you must use [name]
, [id]
or [contenthash]
when using multiple entries.
ExtractTextPlugin
Creates an extracting loader from an existing loader. Supports loaders of type { loader: string; query: object }
.
options.loader: string | object | loader[]
(required) the loader(s) that should be used for converting the resource to a css exporting moduleoptions.fallbackLoader: string | object | loader[]
the loader(s) that should be used when the css is not extracted (i.e. in an additional chunk whenallChunks: false
)options.publicPath: string
override thepublicPath
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 = ; // multiple extract instanceslet extractCSS = 'stylesheets/[name].css';let extractLESS = 'stylesheets/[name].less'; moduleexports = ... module: loaders: test: /\.scss$/i loader: extractCSS test: /\.less$/i loader: extractLESS ... plugins: extractCSS extractLESS ;
License
MIT (http://www.opensource.org/licenses/mit-license.php)