上文學習了webpack基礎安裝及執行,接下來學習一下webpack的一些基礎配置。 webpack一切皆模塊,默認處理js,不管是js、sass、png、jpg都屬於模塊,全部模塊默認有一個入口模塊,從入口模塊開始打包,入口文件中有依賴其餘模塊,再把其餘模塊打包。css
當前執行命令的文件夾下-->src文件-->index.js
複製代碼
默認的出口文件爲:html
當前執行命令的文件夾下-->dist文件-->main.js
複製代碼
當默認有多個入口/默認的入口不在當前的src下的index.js時,就須要咱們‘按洗衣機鍵子’啦,否則工具不知道該從哪一個文件開始,從哪一個文件輸出,強制執行估計它會崩潰吧,哈哈:node
一、在命令行輸入webpack
webpack demo.js -o bundle.js
//demo.js爲要打包的文件,-o爲output,及輸出,將打包文件輸出爲bundle.js文件,在html文件中script標籤引入bundle.js便可
- 若要設置打包的模式
webpack demo.js -o bundle.js --mode development
//--mode development意爲設置mode(模式)爲開發模式
複製代碼
二、在文件夾中建立配置文件webpack.config.jsweb
//下方詳解
複製代碼
webpack.config.jstypescript
當在命令行輸入webpack執行打包,會發現,它變心了,它就不找src下的index.js了,而是找咱們的配置文件了,固然,前提是你的配置文件名爲webpack.config.js。npm
當一個項目不一樣環境使用不一樣打包配置文件時命令行輸入數組
webpack --config 配置文件名
複製代碼
表明被打包事後的文件sass
入口起點 --> 入口文件以來的模塊和庫 --> 處理依賴bash
module.exports = {
entry:'./src/index.js' //字符串形式
entry: { //對象形式,支持多個入口文件
main: './path/to/my/entry/file.js',
app: './src/app.js'
}
}
複製代碼
打包完畢 --> 輸出bundles(打完包的部分) --> 輸出文件命名(默認爲./dist)
const path = require('path')
module.exports = {
entry:'./src/index.js' //入口
output: { //出口
path: path.resolve(__dirname,'dist'), //第一個path爲當前路徑,第二個path是node裏提供的變量,需提早引入,__dirname找到當前文件(webpack.config.js)所在目錄,'dist'爲打包後輸出的文件
filename: 'my-first-webpack.bundle.js' //輸出的單個文件名字
filename: '[name].bundle.js' //當有多個入口文件時,就會打包成多個出口文件,name爲入口文件名
}
}
複製代碼
用來將其餘不一樣語言的文件(如:less、sass、typescript等)轉爲js文件
const path = require('path')
module.exports = {
entry:'./src/index.js' //入口
output: { //出口
path: path.resolve(__dirname,'dist'),
filename: 'my-first-webpack.bundle.js'
},
module: { //loader模塊
rules: [
{ test: /\.css$/, use: 'css-loader' }, //use爲使用什麼類型的loader處理test匹配到的文件
{ test: /\.less$/, use: ['style-loader','css-loader','less-loader']} //匹配全部的less文件,先用less-loader解析,再用css-loader解析css,以後用style-loader使文件解析爲行內樣式表,前提是這三個模塊和less都已下載安裝
]
}
}
複製代碼
下載 --> require進配置文件中 --> 應用到配置數組plugins中
const HtmlWebpackPlugin = require('html-webpack-plugin'); //經過 npm 安裝,抽離出html文件,裏面默認引入打包完的文件
const path = require('path')
module.exports = {
entry:'./src/index.js' //入口
output: { //出口
path: path.resolve(__dirname,'dist'),
filename: 'my-first-webpack.bundle.js'
},
module: { //loader模塊
rules: [
{ test: /\.css$/, use: 'css-loader' },
{ test: /\.less$/, use: ['style-loader','css-loader','less-loader']}
]
},
plugins: [
new HtmlWebpackPlugin()
]
}
複製代碼
插件這裏只作瞭解,以後會單獨詳解插件的配置~
選擇development 或 production 之中的一個,來設置 mode 參數
const path = require('path')
module.exports = {
entry:'./src/index.js', //入口
output: { //出口
path: path.resolve(__dirname,'dist'),
filename: 'my-first-webpack.bundle.js'
},
mode: 'development'
}
複製代碼
開發模式,打包以後文件爲未壓縮版本的
生產模式,打包以後文件爲壓縮版本的,缺點在開發中保存都會在第一行,對開發人員不友好