[webpack] webpack 2 入門: Extract Text Plugin で CSS ファイルを出力する

bundle されている CSS を静的なファイルとして出力します。

[markdown]
導入した外部ライブラリの CSS や Web Font が、JavaScript で style に差し込まれていることを下記で確認しました。

> * [webpack 2 入門: CSS や image を bundle する | deadwood](https://www.d-wood.com/blog/2017/06/06_9007.html)

この asset を他でも活用できるように、Extract Text Plugin を利用してファイル出力します。

## Installation

プラグインをインストールします。

> * [webpack-contrib/extract-text-webpack-plugin: Extract text from bundle into a file.](https://github.com/webpack-contrib/extract-text-webpack-plugin)

“`prettyprinted
% yarn add –dev extract-text-webpack-plugin
“`

## webpack.config.js

プラグインを読込、`.css` の処理に加えます。
出力されるファイル名を指定します。

“`javascript:webpack.config.js
const ExtractTextPlugin = require(‘extract-text-webpack-plugin’);
module.exports = {
:
module: {
rules: [
:
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: ‘style-loader’,
use: [‘css-loader’],
}),
},
],
:
},
plugins: [
:
new ExtractTextPlugin(‘stylesheets/style.css’),
],
};
“`

## Usage

webpack コマンドを実行します。
css ファイルが出力されていることが確認できます。

“`prettyprinted
% $(yarn bin)/webpack
Hash: e072bab9a140b4afaeb5
Version: webpack 2.6.1
Time: 5158ms
Asset Size Chunks Chunk Names
vendors.js 251 kB 0 [emitted] [big] vendors
app.js 357 kB 1 [emitted] [big] app
stylesheets/style.css 23.6 kB 1 [emitted] app
index.html 288 bytes [emitted]
:
“`

このサンプルでは HTML も自動で生成されていますが、`` タグが追加されていることも確認できます。

“`html:dist/index.html




Webpack App



“`

> * [Add: Extract Text Plugin · DriftwoodJP/sandbox-webpack@60050e6](https://github.com/DriftwoodJP/sandbox-webpack/commit/60050e6b195b1dd73ce246b70dabdbb31b39d7b9)

## 補遺

> * [Getting Started with CSS Modules | CSS-Tricks](https://css-tricks.com/css-modules-part-2-getting-started/)
[/markdown]