Webpackノート
6893 ワード
Webpackノート
深入浅出Webpack.呉浩麟
webpack公式サイト
インストール entry:入り口 out put:出力 loader:JavaScriptファイルではない変換器を処理し、任意の種類のファイル/モジュール を導入する. plugins:プラグイン、例えば、最適化と圧縮ができます. mode:モード、設定 思想
設定
ファイルwebpack.co.nfig.js
入り口 output.filename出力ファイルの名前stringは、複数のchuckがあれば、テンプレートと変数 を使用する. output.path出力ファイルをローカルに保存するディレクトリは、絶対パス である必要があります.
Module
処理モジュールの設定ルール
modules.rules
設定モジュールの読み込みと解析ルールAray条件マッチング:test、include、exclude アプリケーション規則:選択されたファイルに対してLoader を使用する.
モジュール化されていない部分のファイルの再帰的解析と処理を無視します.
モジュール対応ファイルのルールを探しています.
私たちの必要: httpサービスを提供します. .ファイルの変更を待ち受ける自動更新 .
インストール
ES 6対応
Babelを使ってES 6をES 5文法に変換します.
.babelrc
babelのプロファイル
インストール
tsconfig.json
typescriptのプロファイル
使用
インストール
インストール
1.ReactとBabelインストール babelの構成、 を増加します.
2.ReactとType Scriptインストール 構成tsconfig.json 配置Webpack Vue対応
1.Vueとbabel
インストール
インストール
ファイル変換機能があります.ファイルをモジュールと見なす
深入浅出Webpack.呉浩麟
webpack公式サイト
インストール
npm i -D webpack
概念mode: development
またはmode: production
設定
ファイルwebpack.co.nfig.js
module.exports = {
//
entry: './main.js',
//
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, './dist'),
},
//
module: {
rules: {
test: /\.css$/,
use: ['style-loader', 'css-loader'], // loader
}
},
//
resolve: {},
//
plugins: [],
// DevServer , DevServer Webpack ,
devServer: {},
//
//
target: 'web', // web | node | ...
// Source Map
devtool: 'source-map',
//
watch: true, // DevServer ,
//
watchOptions: {},
//
}
Entry入り口
// string | Array | Object
entry: './app/entry' // string
entry: ['./app/entry1', './app/entry2'] // array
// Chunk, main
entry: {a: './app/entry-a', b: './app/entry-b'} // object
// object Chunk,
//
// , entry,
//
entry: () => {
return {
a: './pages/a',
b: './pages/b',
}
};
//
entry: ()=> new Promise((resolve)=>{
resolve({
a: './pages/a',
b: './pages/b',
});
});
Outputoutput.filename = '[name]_[hash].js' // '[hash:8].js' // hash 20
output.path = path.resolve(__dirname, 'dist')
Module
処理モジュールの設定ルール
modules.rules
設定モジュールの読み込みと解析ルールAray
modules.rules = [
{
test: /\.scss$/, //
use: ['style-loader','css-loader','sass-loader'], // Loader
// Loader rules[].loader = 'xx-loader'
// loader :1.'xx-loader?params' 2.
exclude: path.resolve(__dirname, 'node_modules'), // node_modules
// test、exclude、include :String|Reg|[Reg]|String
}
]
modules.noParseモジュール化されていない部分のファイルの再帰的解析と処理を無視します.
// RegExp|[RegExp]|function
noParse: /jquery|chartjs/ //
noParse: (content)=>{
// content
// true false
return /jquery|chartjs/.test(contest);
}
Resoliveモジュール対応ファイルのルールを探しています.
{
//
resolve.alias: {
components: './src/components',
// import Btn from 'components/button'
// import Btn from './src/components/button'
'react$': '/path/to/react.min.js',
// , import 'react' import '/path/to/react.min.js'
},
// , , Webpack xx、xx.js、xx.json
resolve.extentsions: ['.js', '.json'],
//
resolve.enforceExtension: true,
// node_modules , , false
resolve.enforceModuleExtension: false,
}
DevServer私たちの必要:
インストール
npm i -D webpack-dev-server
実行webpack-dev-server
設定//
devServer.proxy
//
devServer.hot: true ,
// ,
devServer.inline: true,
// index.html, html ,
devServer.historyApiFallback: true,
//
devServer.contentBase: path.join(__dirname, 'public') | false /* */ ,
//
devServer.headers: {'X-foo': 'bar'},
// , 127.0.0.1
devServer.host: '0.0.0.0', //
//
devServer.allowedHosts: []
//
devServer.disabeHostCheck
// https
devServer.https: true | object
//
devServer.clientLogLevel
// Gzip
devServer.compress: true | false,
//
devServer.open
実戦ES 6対応
Babelを使ってES 6をES 5文法に変換します.
.babelrc
babelのプロファイル
{
"plugins":[], // babel
"presets":[], // babel
}
使用インストール
npm i -D babel-loader
#
webpack配置resolve.extensions = ['.ts', '.js']
module.rules = [{
test: /\.js$/,
user: ['babel-loader'],
}]
Type Script対応tsconfig.json
typescriptのプロファイル
使用
インストール
npm i -D typescript awesome-typescript-loader
webpack配置// webpack.config.js
module.rules=[{
test:/\.ts$/,
loader: 'awesome-typescript-loader',
}]
SCSS、Lessをサポートしますインストール
# SCSS
npm i -D sass-loader css-loader style-loader
npm i -D node-sass
# Less
npm i -D less
npm i -D style-loader css-loader less-loader
webpack配置// SCSS
module.rules = [{
test: /\.scss/,
use: ['style-loader', 'css-loader', 'sass-loader'],
}]
// less
module.rules = [{
test: /\.scss/,
use: ['style-loader', 'css-loader', 'less-loader'],
}]
React対応1.ReactとBabel
npm i -D react react-dom
npm i -D babel-preset-react
{
"preset": [
"react"
]
}
2.ReactとType Script
npm i -D react react-dom @types/react @types/react-dom
//
{
"conpilerOptions": {
"jsx": "react"
}
}
module.rules = [{
test: /\.tsx$/,
loader: 'awesome-typescript-loader',
}]
1.Vueとbabel
インストール
npm i -S vue
npm i -D vue-loader css-loader vue-template-compiler
webpack配置module.rules = [{
test: /\.vue$/,
loader: 'vue-loader',
}]
2.VueとType Scriptインストール
npm i -D ts-loader typescript
tsconfig.json配置{
"compilerOptions": {
"target": "es5",
"strict": true,
"module": "es2015",
"moduleResolution": "node"
}
}
Loaderファイル変換機能があります.ファイルをモジュールと見なす