webpack 4学習ノート
6868 ワード
webpack 4学習ノートDell Lee先生の授業によって整理します.
webpackの取り付けと入り口の配置
おバカ様のインストールnode-v検査が成功しましたか?グローバルインストールwebpack:npm install webpack webpack webpack-cli-g
全体的にインストールしない方がいいです.そうでないと、複数のプロジェクトは互換性がありません.
プロジェクト内のインストール:
インストール可能なすべてのバージョン
具体的なバージョンwebpackをインストールします.
文章は個人の記録に用いられ,誤りがあったら指摘してください.
webpackの取り付けと入り口の配置
おバカ様のインストールnode-v検査が成功しましたか?グローバルインストールwebpack:npm install webpack webpack webpack-cli-g
全体的にインストールしない方がいいです.そうでないと、複数のプロジェクトは互換性がありません.
プロジェクト内のインストール:
npm install webpack webpack-cli -D
プロジェクト内のwebpackバージョンコードnpx webpack -v
npxは現在のプロジェクトディレクトリの下のnode_になります.modulesはnpmの代わりにwebpacknpxを探してプロジェクト内でインストールして使用します.インストール可能なすべてのバージョン
npm info webpack
を表示します.具体的なバージョンwebpackをインストールします.
npm install @xxxx
//
const path = require('path')
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
//__dirname ,
path: path.resolve(__dirname.
'bundle')
}
}
萼菘packageにおけるスクリプトの配置"script":{
"bundle":"webpack"
}
}
// npm run bundle
webpack-cliの役割:webpackの命令は命令行で有効になります.//
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlungin = require('clean-webpack-plugin')
const webpack = require('webpack')
module.exports = {
//development production
mode: 'development'
/*sourcemap , js , dev
sourcemap
inline:map js , , sourcemap map
cheap: , , module
module:
eval: eval , , 。
:cheap-module-eval-source-map
bug :cheap-module-source-map
source-map
*/
devtool: 'source-map'
devServer: {
//dev
contentBase: './dist'
//
open: true
// , React,Vue webpack , webpack
proxy: {
'/api': 'www.baidu.com'
}
//
//React Vue , modeule.hot
hot: true,
hotOnly: true
}
entry: {
main: './src/index.js',
}
output: {
// cdn
// publicPath: 'http://cdn.com.cn'
//name ,
filename: '[name].js',
//__dirname ,
path: path.resolve(__dirname.
'dist')
}
module: {
rules: [{
test: '/\.js$/',
exclcude: /node_modules/,
// babel-loader webpack babel , @babel/preset-env
// ES6 , Promise, polyfill( )
loader: "babel-loader",
//options .babelrc
options: {
// , , transform-runtime , prest-env+
/*"plugins":[["@babel/plugin-transform-runtime",{
"corejs":2,
"helpers":true,
"regenerator":true,
"useESModules":false
}]]
*/
presets: [
// es6
"@babel/preset-env", {
//
useBuiltIns: 'usage'
// ,
targets: {
chrome: "67"
}
},
// react
"@babel/preset-react"
]
}
},
{
test: /\.(jpg|png|gif)$/,
use: {
/*url-loader
url-loader base64
:
: js
: url-loader, file-loader
*/
loader: 'file-loader',
options: {
//placeholder => ext: hash: hash
name: '[name].[ext]',
// dist/images
outputPath: 'images/'
// 20480(20k) url-loader, 20kb
limit: 204800
}
}
},
/*
style-loader: html head
css-loader: css css
sass-loader: sass css,less-loader ,
postcss-loader: postcss.config.js , css
postcss.config.js
module.exports={
plugins:[
//autoprefixer:
require('autoprefixer')
]
}
*/
// use: ['style-loader', 'css-loader','sass-loader','postcss-loader']
{
test: /\.css$/,
use: [
'style-loader', {
loader: 'css-loader',
options: {
// loader
importLoaders: 2,
// css , import './styles.scss' import styels from './styles.scss'
modules: true
},
'sass-loader',
'postcss-loader'
}
]
}, {
// ,iconfont
test: /\.(eot|ttf|svg)$/,
use: {
loader: 'file-loader'
}
}
]
},
plugins: [
new HtmlWebpackPlugin({
// html js html
// html
template: './src/idnex.html'
}),
//
new CleanWebpackPlungin([
'dist'
]),
new webpack.HotModuleReplacementPlugin()
],
/* tree-shaking , shaking package.json
sideEffects
eg:
{
“sideEffects”:["@babel/pollu-fill"]
}
*/
optimization{
usedEsxports:true
}
}
全体の配置ファイルは、tree-sharkingやsourcemapなどの生産環境と開発環境において異なる配置が必要な配置項目があります.実際の開発ではwebpack-mergeを使って、すべての構成ファイルをwebpack-comon-config.jsweb pack-dev-config.jsweb pack-prod-config.jsに分けて、merg.jsを結合してからコードを減らすことができます.文章は個人の記録に用いられ,誤りがあったら指摘してください.