webpack小白入門之核心概念【1-2】

github代碼地址

通過 npm script 運(yùn)行 webpack


在package.json文件中運(yùn)行的腳本徒像,默認(rèn)是可以讀取到 node_modules/.bin/下面的所以命令的通過npm run build運(yùn)行打包

原理:模塊的局部安裝會在node_modules/.bin目錄下創(chuàng)建軟鏈接

在package.json的scripts中添加一條腳本命令:? "build":"webpack",

??{

??? "name": "webpack.1.2",

??? "version": "1.0.0",

??? "description": "通過 npm script 運(yùn)行 webpack",

??? "main": "index.js",

??? "scripts": {

??? ? "build":"webpack",

??? ? "test": "echo \"Error: no test specified\" && exit 1"

??? },

??? "keywords": [],

??? "author": "",

??? "license": "ISC",

??? "devDependencies": {

??? ? "webpack": "^4.35.3",

??? ? "webpack-cli": "^3.3.5"

??? }

??}

通過在終端運(yùn)行npm run build 即可完成打包項(xiàng)目夺英。

### webpack 核心概念之entry用法

在webpack.config.js文件中:

1. 單入口:entry是一個字符串。

??module.exports = {

????entry:'./src/file.js'

??}

1. 多入口:entry是一個對象

??module.exports = {

????entry: {

??????index: './src/index.js',

??????search: './src/search.js'

????}

??}


?webpack 核心概念之Output的用法

1. Output用來告訴webpack如何將編譯后的文件輸出到磁盤

????module.exports = {

????? entry: './src/index.js',

????? output: {

????? ? path: path.join(__dirname, 'dist'),? // 單入口只要配置path和filename這兩個參數(shù)

????? ? filename: 'bundle.js'

????? },

????? mode:'production'

????}

1. Output多入口配置

????module.exports = {

????? entry: {

????? ? index: './src/index.js',

????? ? search: './src/search.js'

????? },

????? output: {

????? ? filename: '[name].js',? // 通過占位符確保文件名稱的唯一性

????? ? path: __dirname + '/dist'

????? },

????? mode:'production'

????}

?webpack 核心概念之loaders的用法

webpack的開箱即用只支持js和json兩種文件類型,通過loaders去支持其他文件類型瞳遍,并且將他們轉(zhuǎn)化成有效的模塊,并且可以添加到依賴圖中,loaders本身是一個函數(shù),接受源文件作為參數(shù)滑肉,返回轉(zhuǎn)換后的結(jié)果。

常見的loaders


| 名稱 | 描述 |

| :----: | :----: |

| babel-loader | 轉(zhuǎn)換ES6ES7等新特性語法 |

| css-loader | 支持.css文件的加載和解析 |

| less-loader | 將less轉(zhuǎn)換為css |

| ts-loader | 將ts轉(zhuǎn)換為js |

| file-loader | 進(jìn)行圖片摘仅,字體等的打包 |

| raw-loader | 將文件以字符串的形式導(dǎo)入 |

| thread-loader | 多進(jìn)程打包js和css |

??module.exports = {

??? entry: './src/index.js',

??? output: {

??? ? path: path.join(__dirname, 'dist'),

??? ? filename: 'bundle.js'

??? },

??? mode: 'production',

??? module: {

??? ? rules: [

??? ? ? {

??? ? ? ? test: /\.txt$/, use: 'raw-loader'? ? // test 指定匹配規(guī)則 use 指定使用的loader名稱

??? ? ? }

??? ? ]

??? }

??}

?webpack 核心概念之plugins的用法

插件用于bundle文件的優(yōu)化靶庙,資源管理和環(huán)境變量注入,作用于整個構(gòu)建過程

常見的plugins

| 名稱 | 描述 |

| :----: | :----: |

| CommonsChunkPlugin | 將chunks相同的模塊代碼提取成公共js文件 |

| CleanWebpackPlugin | 清理構(gòu)建項(xiàng)目 |

| ExtractTextWebpackPlugin | 將chunks相同的模塊代碼提取成公共js文件 |

| CommonsChunkPlugin | 將css從bundle文件里提取成獨(dú)立的css文件 |

| CopyWebpackPlugin | 將文件或者文件夾拷貝到構(gòu)建的輸出目錄 |

| HtmlWebpackPlugin | 創(chuàng)建html文件去承載輸出的bundle |

| UglifyjsWebpackPlugin | 壓縮js |

| ZipWebpackPlugin | 將打包出的資源生成一個Zip包 |

??module.exports = {

??? entry: './src/index.js',

??? output: {

??? ? path: path.join(__dirname, 'dist'),

??? ? filename: 'bundle.js'

??? },

??? mode: 'production',

??? module: {

??? ? rules: [

??? ? ? {

??? ? ? ? test: /\.txt$/, use: 'raw-loader'? ? // test 指定匹配規(guī)則 use 指定使用的loader名稱

??? ? ? }

??? ? ]

??? },

??? plugins: [

??? ? new HtmlWebpackPlugin({

??? ? ? template: './src/index.html'? //? 創(chuàng)建html文件去承載輸出的bundle

??? ? })

??? ]

??}

### webpack核心概念之mode的用法

<b> 概念:</b>Mode用于指定當(dāng)前的構(gòu)建環(huán)境是:production 娃属, development 六荒,還是 none 。設(shè)置mode的值矾端,可以使用webpack在相應(yīng)階段的內(nèi)置函數(shù)恬吕,默認(rèn)值為production(webpack4.x以后才有的概念),如果是productin须床,webpack會默認(rèn)開啟一些在生產(chǎn)階段才使用的內(nèi)置功能,如下參考:

| 選項(xiàng) | 描述 |

| :----: | :----: |

| development | 設(shè)置process.env.NODE_ENV的值為development渐裂,開啟NameChunksPlugin和NameModulesPlugin |

| production | 設(shè)置process.env.NODE_ENV的值為production豺旬,開啟FlagDependencyUsagePlugin,FlagIncludedChunksPlugin,ModuleConcatenationPlugin,NoEmitOnErrorsPlugin,OccurrenceOrderPlugin,SideEffectsFlagPlugin和TerserPlugin |

| none | 不開啟任何優(yōu)化選項(xiàng) |

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柒凉,隨后出現(xiàn)的幾起案子族阅,更是在濱河造成了極大的恐慌,老刑警劉巖膝捞,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坦刀,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔬咬,警方通過查閱死者的電腦和手機(jī)鲤遥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來林艘,“玉大人盖奈,你說我怎么就攤上這事『” “怎么了钢坦?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啥酱。 經(jīng)常有香客問我爹凹,道長,這世上最難降的妖魔是什么镶殷? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任禾酱,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宇植。我一直安慰自己得封,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布指郁。 她就那樣靜靜地躺著忙上,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闲坎。 梳的紋絲不亂的頭發(fā)上疫粥,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機(jī)與錄音腰懂,去河邊找鬼梗逮。 笑死,一個胖子當(dāng)著我的面吹牛绣溜,可吹牛的內(nèi)容都是我干的慷彤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怖喻,長吁一口氣:“原來是場噩夢啊……” “哼底哗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锚沸,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤跋选,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哗蜈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前标,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年距潘,在試婚紗的時候發(fā)現(xiàn)自己被綠了炼列。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绽昼,死狀恐怖唯鸭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硅确,我是刑警寧澤目溉,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站菱农,受9級特大地震影響缭付,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜循未,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一陷猫、第九天 我趴在偏房一處隱蔽的房頂上張望秫舌。 院中可真熱鬧,春花似錦绣檬、人聲如沸足陨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墨缘。三九已至,卻和暖如春零抬,著一層夾襖步出監(jiān)牢的瞬間镊讼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工平夜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝶棋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓忽妒,卻偏偏與公主長得像玩裙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子段直,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容