初識 Webpack 配置——導入導出等(二)

目錄

✎ 0配置——基本命令

✎ node寫法——主要內容

✎ Webpack核心概念

導入(import)和導出(export)

➊ 入口 / 輸出

➋ Loader

➌ Plugins(插件)

✎ 配置

◆ 入口配置

◆ 出口配置

◆ 模塊配置

◆ 模塊配置 resolve屬性

◆ 插件配置

◆ 開發中服務器配置

✎ 總結

✎ 課程鏈接


  • ✎ 0配置——基本命令

打包命令:npx webpack

原理解析:

  1. 會去找 ../node_modules/.bin/webpack.cmd文件(怎麼樣判斷? 如圖解析
  2. 執行了npx webpack會有一個dist(
  3. 在dist裏面建立index.html 的body裏面直接引用打包後的main.js
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		<script type="text/javascript" src="./main.js">
    			
    		</script>
    	</body>
    </html>
    
  4. 右鍵瀏覽器打開
  5. 添加webpack.config.js內容,如果mode是開發模式則對應bundle.js不壓縮,如果是生產模式(production)則壓縮,默認爲生產模式。
    var HtmlWebpackPlugin = require('html-webpack-plugin')
    let path = require('path')
    console.log(path.resolve('dist'))
    
    module.exports = {
    	mode: 'development',
    	entry: "./src/index.js",
    	output: {
    		path: path.resolve(__dirname, 'dist'),
    		filename: "bundle.js"
    	},
    	plugins: [
    		new HtmlWebpackPlugin()
    	]
    }
    
  6. 總結:藉助配置文件,在依賴中webpack會調用webpack-cli依賴,然後執行../node_modules/webpack-cli/bin/config/config-yargs.js的option默認名稱文件解析,強制修改也是可以的。

     

  • ✎ node寫法——主要內容

  1. Webpack核心概念
  2. Webpack的常用配置

上一篇文章中,我們已經實現了一個基礎的Webpack結構

裏面有webpack.config.js,這個文件是我們在執行Webpack指令過程中會查找的配置文件

上一篇文章中指明瞭編譯的入口文件、輸出路徑,以及生成文件的名稱

       

問題:webpack.config.js到底是什麼東西呢?

答:我們可以理解爲是一個對象;

      module.exports可以對外公佈一個js文件的相應內容!!

          

  • ✎ Webpack核心概念

  1. 導入(import)和導出(export)

推薦文章:Webpack4教程:第一部分,入口、輸入和ES6模塊

// main.js
// import * as lib from './lib.js';
// import * as Dog from './dog.js';
const lib = require('./lib.js')
const Dog = require('./dog.js')


console.log('-------------------整個導入----------------------')
console.log(lib.sum(1, 2));
console.log(lib.substract(3, 1));
console.log(lib.divide(6, 3));


const dog = new Dog.default();
dog.bark();


console.log('---------------導入一個或多個named導出------------')
import {
	sum,
	substract,
	divide
} from './lib';


console.log('sum:' + sum(1, 2));
console.log('substract:' + substract(3, 1));
console.log('divide:' + divide(6, 3));

  1. 入口
  2. 輸出
  3. loader
  4. 插件
  • ➊ 入口 / 輸出

  1. ➣ 入口起點(entry point)指示,webpack應該使用哪個模塊,來作爲構建及內部依賴圖的開始;
  2. ➣ 進入入口起點後,webpack有哪些模塊和庫是入口起點(直接和間接)依賴的。
  3. ➣ 如圖所示(其入口文件是src目錄下的index.js文件,查找這個文件相依賴的內容

    

  • ➋ Loader

  1. loader讓webpack能夠去處理那些非Java script的文件(webpack自身只理解JavaScript)。
  2. loader可以將所有類型的文件轉換爲webpack能夠處理的有效模塊。
  3. loader作用如圖所示

解析:藉助一些相應的loader,將es6的語法轉換爲es5的語法;

  • ➌ Plugins(插件)

  1. Loader被用於轉換某些類型的模塊,而插件則可以用於執行範圍更廣的任務。
  2. 插件的範圍,包括從打包優化和壓縮一直到重新定義環境中的變量。
  3. 插件接口功能及其強大,可以用來處理各種各樣的任務。
  4. 如圖所示(可以提取我們所用到的css、生成html頁面,從一個目錄到另外一個目錄的生成)

  • ✎ 配置

  • ◆ 入口配置

  1. Webpack的入口文件可以是單個也可以是多個,決定了最終打包出來是多個bundle還是一個;
  2. context設置基礎目錄絕對路徑用於從配置中解析入口的起點,先去這裏再去mian.js或者是a.jsresolve記得引入原生模塊!!

  • 出口配置

  • 模塊配置

module配置,主要屬性有rules、test、include、exclude、use等

模塊配置 resolve屬性

設置模塊如何被解析。webpack提供合理的默認值,但是還是可能會修改一些細節。

      

  1. 引入文件的require可以不寫後綴
  2. 如下src/utils路徑,可以設置別名爲utils,可以用utils代替這樣的一個路徑!!

◆ 插件配置

plugins選項用於以各種方式自定義webpack構建過程。

  1. npm install 插件安裝
  2. require 引入插件(pic
  3. new 具體使用位置,插件實例化,添加對應的屬性(pic
  • ◆ 開發中服務器配置

webpack-dev-server用於啓動一個開發過程中小型服務器,方便開發調試;

  1. port 制定服務器監聽端口號
  2. contentBase:path.join(__dirname,"dist")  指告訴服務器資源路徑在哪裏
  3. compress 是否啓動服務器gzip壓縮(傳輸過程中變小,實現過程中再解壓,增加反應速度)
  4. publicPath 設定可訪問靜態資源路徑
  5. proxy 可以作爲代理服務器向口段發送請求

  • ✎ 總結

module.export是對象,包含很多屬性:

  1. entry是入口文件
  2. output輸出路徑
  3. module是指明用到的loader
  4. resolve可以不寫後綴名
  5. plugins插件的使用和實例化
  6. devServer內置小型服務器
  • 課程鏈接

51cto學習課程(webpack配置)

https://edu.51cto.com//center/course/lesson/index?id=375192

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章