Webpackでのローダ使用
24556 ワード
実際の開発過程において、webpackのデフォルトはパッケージ処理のみである.js接尾辞名の最後のモジュール.その他js接尾辞名の最後のモジュールは、webpackのデフォルトでは処理できません.loaderローダを呼び出す必要があります.そうしないと、エラーが発生します.1.パッケージ処理cssファイル(1)
注意:use配列で指定されたloader順序は固定されています.複数のloaderの呼び出し順序は、後から前へ呼び出されます.2、パッケージ処理lessファイル(1)
3、パッケージ処理scssファイル(1)
4、postcssを構成してcssの互換接頭辞を自動的に追加する(1)
(3)webpack.config.jsのrules配列では、cssのloaderルールを次のように変更します.
5、パッケージスタイルシートの画像とフォントファイル(1)
6、パッケージ処理jsファイルの高度な構文(1)babel変換器関連のパッケージをインストールする:
(4)webpack.config.jsのrules配列では、loaderルールを次のように追加します.
7、webpack構成vueコンポーネントのローダ(1)
8、webpackプロジェクトでvue(1)を使用して
9、webpackパッケージはpackageで配布する.jsonファイルには、プロジェクトルートディレクトリのwebpackをデフォルトでロードするwebpackパッケージコマンドが構成されている.config.jsプロファイル.
10.上記のプロファイルについては、(1)webpack.config.jsファイルは次のとおりです.
(2)postcss.config.jsファイルは次のとおりです.
(3)babel.config.jsファイルは次のとおりです.
(4)上記の依存パッケージについては以下の通りである.
npm i style-loader css-loader -D
コマンドを実行し、cssファイルを処理するloaderをインストールする.(2)webpack.config.jsプロファイルの追加loaderルールは次のとおりです. module: {
rules: [
{test:/\.css$/,use:['style-loader','css-loader']}
// ,test ,use loader。
]
}
注意:use配列で指定されたloader順序は固定されています.複数のloaderの呼び出し順序は、後から前へ呼び出されます.2、パッケージ処理lessファイル(1)
npm i less-loader less -D
コマンドを実行し、lessファイルを処理するloaderをインストールします.(2)webpack.config.jsプロファイルの追加loaderルールは次のとおりです.module: {
rules: [
{test:/\.less$/,use:['style-loader','css-loader','less-loader']}
]
}
3、パッケージ処理scssファイル(1)
npm i sass-loader node-sass -D
コマンドを実行し、scssファイルを処理するloaderをインストールする.(2)webpack.config.jsプロファイルの追加loaderルールは次のとおりです.module: {
rules: [
{test:/\.scss$/,use:['style-loader','css-loader','sass-loader']}
]
}
4、postcssを構成してcssの互換接頭辞を自動的に追加する(1)
npm i postcss-loader autoprefixer -D
コマンドを実行する.(2)プロジェクトルートディレクトリの下にpostcssプロファイルpostcssを作成する.config.jsは、次の構成を初期化します.//
const autoprefixer = require('autoprefixer');
module.exports = {
plugins: [autoprefixer] //
}
(3)webpack.config.jsのrules配列では、cssのloaderルールを次のように変更します.
module: {
rules: [
{test:/\.css$/,use:['style-loader','css-loader','postcss-loader']}
]
}
5、パッケージスタイルシートの画像とフォントファイル(1)
npm i url-loader file-loader -D
コマンドを実行します.(2)webpack.config.jsのrules配列では、loaderルールを次のように追加します.module: {
rules: [
{test:/\.jpg|png|gif|webp$/,use:'url-loader?limit=56000'}
//“?” loader ,limit , (byte), limit , base64 。
]
}
6、パッケージ処理jsファイルの高度な構文(1)babel変換器関連のパッケージをインストールする:
npm i babel-loader @babel/core @babel/runtime -D
.(2)babel構文プラグイン関連パッケージのインストール:npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D
.(3)プロジェクトルートディレクトリの下にbabelのプロファイルbabelを作成する.config.jsと初期化の基本構成は以下の通りです.module.exports = {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']
}
(4)webpack.config.jsのrules配列では、loaderルールを次のように追加します.
module: {
rules: [
{test:/\.js$/,use:'babel-loader',exclude:/node_modules/}
//exclude , babel-loader node_modules js 。
]
}
7、webpack構成vueコンポーネントのローダ(1)
npm i vue-loader vue-template-compiler -D
コマンドを実行します.(2)webpack.config.jsプロファイルでvue-loaderを追加する構成は次のとおりです.const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
plugins: [htmlPlugin,new VueLoaderPlugin()],
module: {
rules: [
{test:/\.vue$/,loader:'vue-loader'}
]
}
}
8、webpackプロジェクトでvue(1)を使用して
npm i vue -S
を実行し、vueをインストールする.(2)srcでのindex.jsエントリファイルには、import Vue from 'vue'
によってvueコンストラクション関数がインポートされます.(3)vueのインスタンスオブジェクトを作成し、制御するel領域を指定します.(4)render関数でAppルートコンポーネントをレンダリングする.//1. vue
import Vue from 'vue';
//2.
import App from './components/App.vue';
const vm = new Vue({
//3. vm
el: '#app',
//4. render , el
render: h => h(App)
})
9、webpackパッケージはpackageで配布する.jsonファイルには、プロジェクトルートディレクトリのwebpackをデフォルトでロードするwebpackパッケージコマンドが構成されている.config.jsプロファイル.
"scripts": {
"built": "webpack -p"
}
10.上記のプロファイルについては、(1)webpack.config.jsファイルは次のとおりです.
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const htmlPlugin = new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html'
})
module.exports = {
//
mode: 'development', //development/production
entry: path.join(__dirname,'./src/index.js'),
output: {
path: path.join(__dirname,'./dist'),
filename:'bundle.js'
},
plugins: [htmlPlugin,new VueLoaderPlugin()],
module: {
rules: [
{test:/\.css$/,use:['style-loader','css-loader','postcss-loader']},
{test:/\.less$/,use:['style-loader','css-loader','less-loader']},
{test:/\.scss$/,use:['style-loader','css-loader','sass-loader']},
{test:/\.jpg|png|gif|webp$/,use:'url-loader?limit=56000'},
{test:/\.js$/,use:'babel-loader',exclude:/node_modules/},
{test:/\.vue$/,loader:'vue-loader'}
]
}
}
(2)postcss.config.jsファイルは次のとおりです.
const autoprefixer = require('autoprefixer');
module.exports = {
plugins: [autoprefixer]
}
(3)babel.config.jsファイルは次のとおりです.
module.exports = {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']
}
(4)上記の依存パッケージについては以下の通りである.
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.9.0",
"@babel/preset-env": "^7.9.5",
"@babel/runtime": "^7.9.2",
"autoprefixer": "^9.7.6",
"babel-loader": "^8.1.0",
"css-loader": "^3.5.2",
"file-loader": "^6.0.0",
"html-webpack-plugin": "^4.2.0",
"less": "^3.11.1",
"less-loader": "^5.0.0",
"node-sass": "^4.13.1",
"postcss-loader": "^3.0.0",
"sass-loader": "^8.0.2",
"style-loader": "^1.1.4",
"url-loader": "^4.1.0",
"vue-loader": "^15.9.1",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
}