1. 程式人生 > >webpack3.x配置/dev-server相關配置說明及其他相關配置

webpack3.x配置/dev-server相關配置說明及其他相關配置

第一種方式:在package.json進行設定;

"scripts": {
    "build": "webpack",
    "dev": "webpack-dev-server --content-base build --progress --host 127.0.0.1  --port 8080 --inline",

第二種方式:在webpack.config.js進行配置;

在module.exports的物件中進行配置;

const webpackServer = {
	protocol:'http://',
	host:'172.20.0.20',
	port:'3000'
}

devServer: {
	host: webpackServer.host,
	inline: true,
	port: webpackServer.port
	},

那麼package.json中檔案就不需要設定

historyApiFallback屬性:值為布林值;

需不需要在cmd命令中是否列印一連竄的輸出進度,只需要在package.json中配置progress就可以的,不需要就不用配置。

上面是對webpack-dev-server的介紹,接下來看看其他相關配置,

由於webpack3.x壓縮的效果不是特別好,壓縮程式碼的體積非常龐大,效率比較低。所以必須要通過相關外掛來提高程式碼壓縮外掛,從而提高程式碼的壓縮比率,減輕程式碼單個檔案的重量,不像4.x那樣將很多相關外掛全部整合餘webpack-cli中,從而提高webpack的配置效率,提高工作的效率。

webpack3.x相關外掛之webpack.optimize.CommonsChunkPlugin,提取第三庫和公共模組。

 new webpack.optimize.CommonsChunkPlugin({
			name: 'base',
			filename: 'js/[name].[hash:8].js'
		  }),
webpack3.x相關外掛之webpack.DefinePlugin,設定全域性引數,通過你可以設定全域性變數,在全域性檔案,你可以直接獲取該變數,不需要聲名定義。
new webpack.DefinePlugin({//設定全域性變數
			ENV:JSON.stringify(process.env.NODE_ENV)
		}),
		

在這個根目錄下的所有檔案中,都能獲取得到ENV這個引數的值。

webpack3.x相關外掛之webpack.ProvidePlugin,可以設定全域性模組,不需要通過import或require進行引入,僅能直接獲取,無論網路第三方庫還是自己定義的庫,都能通過他進行設定;

new webpack.ProvidePlugin({//引入成為全域性模組
			$$:"jquery", 
			jquery:"jquery",
			"window.jquery":"jquery",
			"http":'./component/http.js'
		}),

webpack3.x相關外掛之熱更新,每次編譯自動儲存,webpack.HotModuleReplacementPlugin;

new webpack.HotModuleReplacementPlugin(),

webpack3.x相關外掛之模版外掛,編譯會自動生成一個html模版,不需要手動引入建立。

new htmlWebpackPlugin({
			template:__dirname+'/app/index.tmpl.html',
			//favicon:'./favicon.ico'
		}),
webpack3.x相關外掛之自動開啟預設瀏覽器
new openBrowser({
			url:webpackServer.protocol+webpackServer.host+':'+webpackServer.port
		}),

接下來重點介紹兩款外掛,一個就是將css和js程式碼給分割開的extract-text-webpack-plugin,另一個就是happypack採用多程序打包的外掛。

由於本人常用於react開發,是當下比較流行mv*框架。在打包過程中,css樣式也會被打包到js中,為了開發的方便快捷,採用此外掛將轉碼好的css程式碼從js中脫離出來。

而happypack外掛為了提高程式碼的編譯速度,實現了多程序打包。

程式碼:

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HappyPack = require('happypack');
引入外掛包,設定包的大小。
const happyThreadPool = HappyPack.ThreadPool({ size: 5 });
//加入happyThreadPool外掛包;
function createHappyThread(id,loaders){
	return new HappyPack({
      id: id,
      threadPool: happyThreadPool,
      loaders: loaders,
      //cache:true
    })
}


 
{
				test:/\.(css|scss)$/,
				use: ExtractTextPlugin.extract({//分離和js程式碼。
					fallback: 'style-loader',
					use: 'happypack/loader?id=sass'
                    
				})
			
			},
			{
				test:/\.(js|jsx)$/,
				use:'happypack/loader?id=jsx'
				
			},
			{
				test:/\.json$/,
				use:'happypack/loader?id=json'
				
			},
			{
				test:/\.(png|jpg|gif|jpeg|svg)$/i,
				use:'file-loader?limit=2048&name=img/[hash:8].[name].[ext]'




 }
css外掛
 //分離js與css樣式外掛;
		new	ExtractTextPlugin({
		    filename: '[name].min.css',
		    allChunks: true,
		}),


createHappyThread('jsx',[{
					loader:"babel-loader",
					 options: {
                    	cacheDirectory: true
               		 }
				}]),
		createHappyThread('sass',[{loader:'css-loader',options: {
                    minimize: true
                }},{loader:'postcss-loader',options: {
					sourceMap: true,
					config: {
						path: 'postcss.config.js'  // 這個得在專案根目錄建立此檔案
					}} },{loader:'fast-sass-loader',options: { sourceMap: true }}]),
		createHappyThread('json',['json-loader']),

以上就是我對webpack3.x部分外掛的認識,如你有需要,您也可以去這個連線下載,可以去下載個人資源包:https://download.csdn.net/my/uploads,希望大家謬誤之出,給予指正。