前書き: Webpack の CSS 処理は非常に基本的なトピックです。ただ、webpack4 では CSS ブラウザ互換性を解決するために autoprefixer を使用する際に、これまでとは異なる落とし穴が存在します。そこでこの知識について詳しく書いていきます。
1. 必要な依存関係
- style-loader: CSS ファイルを HTML ページのスタイル タグに挿入します。参考: https://www.webpackjs.com/loa...
- css-loader: js にインポートされた CSS ファイルを解析します。参考: https://www.webpackjs.com/loa...
- less-loader: css 前処理言語を解析します。他の前処理言語を使用する場合は、対応するローダーを使用する必要があります。参考: https://www.html.cn/doc/webpa...
-
postcss-loader: プロジェクトに記述した CSS の後処理:
- CSS を JavaScript が操作できる抽象構文ツリー (AST) 構造に解析します。
- プラグインを呼び出して AST を処理し、結果を取得します。
- autoprefixer: さまざまなブラウザに適応するために css にプレフィックスを付ける postcss-loader のプラグイン。
注: postcss-loader の機能は、映画やテレビのポストプロダクションとまったく同じで、すべての元のファイルを結合し、プラグインを使用して特殊効果を追加し、最後に出力します。完成品。 autoprefixer プラグインは、postcss-loader によって解析された AST に対して後処理を実行します。
2. 依存関係をインストールします
npm install --save-dev less-loader less style-loader css-loader postcss-loader autoprefixer
ログイン後にコピー
3. 少ないテスト ファイル style.less
#world{ display: flex; }
ログイン後にコピー
import './style.less';
ログイン後にコピー
module: { rules: [ { test: /\.less$/, use: [ 'style-loader', {loader: 'css-loader', options: { importLoaders: 1 } }, 'less-loader', 'postcss-loader' ] }, ] }
ログイン後にコピー
module.exports = { plugins: [ require('autoprefixer') ] }
ログイン後にコピー
{ "scripts": { "build": "webpack", "dev": "webpack-dev-server --mode development" }, "browserslist": [ "defaults", "not ie < 11", "last 2 versions", "> 1%", "iOS 7", "last 3 iOS versions" ] }
ログイン後にコピー
npm run build
ログイン後にコピー
#world { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; }
ログイン後にコピー