webpack使用

Get Started

  1. 安裝
  2. 運(yùn)行、轉(zhuǎn)譯js
  3. 轉(zhuǎn)譯html
  4. 轉(zhuǎn)譯css
  5. 預(yù)覽網(wǎng)頁

webpack

webpack可以:
①轉(zhuǎn)譯代碼(es6轉(zhuǎn)為es5,scss轉(zhuǎn)為css)
②構(gòu)建build
③代碼壓縮
④代碼分析

可以使用下列命令行查詢信息

npm info webpack version  //查看版本號(hào)
npm info webpack //查看所有信息
1. 安裝

查詢文檔,在概覽(concepts)或?qū)Ш剑╣uides)中可以找到官方給出的下載命令行转锈。

mkdir webpack-demo    // 新建目錄
cd webpack-demo    // 打開
npm init -y                // 初始化搁宾,得到一個(gè)package.json文件
npm install webpack@4.x  webpack-cli@3.x --save-dev    // 按照版本安裝(本地)并生成兩個(gè)文件: ①是node_modules; ②是package-lock.json文件.

用yarn也可以隆圆,在這里我使用的是yarn add webpack@4 webpack-cli@3 --dev沾歪。

2. 運(yùn)行、轉(zhuǎn)譯js

如何使用本地安裝的webpack

npx  webpack    //npx在windows不夠穩(wěn)定 如果安裝node_modules里面有空格的話 可能會(huì)不起作用
// 或者是
./node_modules/.bin/webpack --version //當(dāng)npx不能用的時(shí)候霹粥,可以退回這種手動(dòng)找路徑的方式

執(zhí)行npx webpack 時(shí)運(yùn)行警告解決方法
執(zhí)行npx webpack后可能會(huì)出現(xiàn)這樣的警告。

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
or. Learn more: https://webpack.js.org/configuration/mode/ 

我們可以看出這個(gè)警告是與配置有關(guān)疼鸟,并且是關(guān)于mode這個(gè)選項(xiàng)沒有設(shè)置后控。
首先查看官方文檔查找關(guān)于configuration的信息,按照文檔給出的方法創(chuàng)建webpack.config.js空镜。然后在文件里寫入以下內(nèi)容:

var path = require('path');

module.exports = {
  mode: 'development',      // 這是開發(fā)者模式浩淘,此外還有production模式
  entry: './foo.js',                //  entry,用來設(shè)置想要轉(zhuǎn)譯代碼的文件
  output: {
    path: path.resolve(__dirname, 'dist'),  // 默認(rèn)dist目錄
    filename: 'foo.bundle.js'  // output吴攒,轉(zhuǎn)譯后生成的文件张抄,可以設(shè)置文件名
  }
};

我們可以使用filename: '[name].[contenthash].js'自動(dòng)生成一個(gè)新的不重名的文件。
指令簡化
每次都要生成新的 js 文件舶斧,越積越多欣鳖,所以需要使用rm rf dist; npx webpack刪掉dist目錄再重新打包。
但是這樣的命令又太長了茴厉,每次用起來麻煩泽台,我們可以在 package.json 文件的 scripts 方法里面增加上"build":"rm -rf dist && webpack",運(yùn)行 yarn build 或者 npm run build 即可矾缓。

3. 轉(zhuǎn)譯html

根據(jù)官方中文手冊:https://webpack.docschina.org/plugins/html-webpack-plugin/
首先加載插件怀酷。

npm install --save-dev html-webpack-plugin
// 或
yarn add html-webpack-plugin --dev

然后在webpack的js文件中添加以下代碼,生成一個(gè)html文件嗜闻。

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
  entry: 'index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'index_bundle.js',
  },
  plugins: [new HtmlWebpackPlugin()],
};

我們只是要生成html蜕依,所以只留HtmlWebpackPlugin與export中的plugins: [new HtmlWebpackPlugin()],。運(yùn)行yarn build,就會(huì)在dist中生成一個(gè)html文件样眠。
插件配置
https://github.com/jantimon/html-webpack-plugin#options
在官方手冊中打開插件配置可以找到所有設(shè)置還有例子友瘤。

配置.png

圖中使用的是title和template。

title
替換生成html中的標(biāo)題名檐束,需要將模板中的標(biāo)題名換成<title><%= htmlWebpackPlugin.options.title %></title>
template
以該路徑的模板生成一個(gè)html辫秧,這個(gè)模板需要提前設(shè)置好,不然空模板只會(huì)生成一串script標(biāo)簽被丧。

4. 轉(zhuǎn)譯css

與轉(zhuǎn)譯 html 步驟相似盟戏,通過查詢官方文檔下載插件及配置,不過這里需要注意的是 css-loader 需要與 style-loader 一起使用(兩個(gè)都要下載)甥桂。
css-loader 將 css 文件引入到 js 中柿究,style-loader 則是將其轉(zhuǎn)為 style 標(biāo)簽插入到 head 標(biāo)簽里。

  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ["style-loader", "css-loader"],
      },
    ],
  }

css抽出文件
除了將 css 放進(jìn) style 標(biāo)簽插入 html黄选,還可以將 css 內(nèi)容打包抽出蝇摸,再在 html 里引入 css 文件,這個(gè)時(shí)候就要用到MiniCssExtractPlugin這個(gè)插件了糕簿。
還是跟上面一樣下載并且配置探入。

module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: "../",
            },
          },
          "css-loader",
        ],
      },
    ],
  },
5. 實(shí)時(shí)預(yù)覽網(wǎng)頁

下載插件 webpack-dev-server 并配置,在 package.json 的 scripts 方法里添加 "start": "webpack-dev-server" 懂诗,簡化指令就可以使用 yarn start 來開啟預(yù)覽了蜂嗽。
mode 切換
mode的使用一半分為為開發(fā)者提供的 development 和生產(chǎn)(打包)用的 production
想分別使用

(1)
在文件內(nèi)設(shè)置標(biāo)識(shí)(if( TARGET === 'start' )殃恒、if( TARGET === 'build' ))植旧,根據(jù)指令來分別是哪種模式,再根據(jù)模式進(jìn)行不同的操作离唐。
(2)
也可以創(chuàng)建一個(gè)基礎(chǔ)的通用文件(webpack.config.common.js)病附,再分別創(chuàng)建兩種模式單獨(dú)使用的文件,并在其中的設(shè)置中調(diào)用通用文件的配置(...common)亥鬓。使用指令時(shí)還需要在 package.json 文件中添加 "build": "rm -rf dist && webpack --config webpack.config.prod.js", 來區(qū)分調(diào)用文件完沪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嵌戈,隨后出現(xiàn)的幾起案子覆积,更是在濱河造成了極大的恐慌,老刑警劉巖熟呛,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宽档,死亡現(xiàn)場離奇詭異,居然都是意外死亡庵朝,警方通過查閱死者的電腦和手機(jī)吗冤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門又厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椎瘟,你說我怎么就攤上這事覆致。” “怎么了肺蔚?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵篷朵,是天一觀的道長。 經(jīng)常有香客問我婆排,道長,這世上最難降的妖魔是什么笔链? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任段只,我火速辦了婚禮,結(jié)果婚禮上鉴扫,老公的妹妹穿的比我還像新娘赞枕。我一直安慰自己,他們只是感情好坪创,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布炕婶。 她就那樣靜靜地躺著,像睡著了一般莱预。 火紅的嫁衣襯著肌膚如雪柠掂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天依沮,我揣著相機(jī)與錄音涯贞,去河邊找鬼。 笑死危喉,一個(gè)胖子當(dāng)著我的面吹牛宋渔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辜限,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼皇拣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了薄嫡?” 一聲冷哼從身側(cè)響起氧急,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岂座,沒想到半個(gè)月后态蒂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费什,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年钾恢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了手素。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瘩蚪,死狀恐怖泉懦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疹瘦,我是刑警寧澤崩哩,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站言沐,受9級(jí)特大地震影響邓嘹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜险胰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一汹押、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧起便,春花似錦棚贾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鼻疮,卻和暖如春怯伊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陋守。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工震贵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人水评。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓猩系,卻偏偏與公主長得像,于是被迫代替她去往敵國和親中燥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寇甸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • webpack使用學(xué)習(xí) 本分享學(xué)習(xí)借鑒webpack中文官網(wǎng),官網(wǎng)鏈接(中文文檔):https://www.web...
    腿毛怪丶叔叔閱讀 865評(píng)論 0 5
  • 認(rèn)識(shí)webpack 什么是webpack ? webpack是一個(gè)前端的模塊化打包(構(gòu)建)的工具 功能:?- 1...
    cj_jax閱讀 6,324評(píng)論 0 4
  • # 什么是webpack疗涉?* 問題:為什么在 vue 中使用 npm run build 命令就可以把開發(fā)環(huán)境中的...
    徒步旅行_72c5閱讀 249評(píng)論 0 0
  • 打包命令 在當(dāng)前項(xiàng)目路徑下, 輸入命令 $ webpack 入口 出口 注意: webpack 命令是全局命令 配...
    coderlion閱讀 193評(píng)論 0 0
  • 1拿霉、webpack入門 Webpack 是一個(gè)前端資源的打包工具,它可以將js咱扣、image绽淘、css等資源當(dāng)成一個(gè)模...
    余生安好178閱讀 1,065評(píng)論 0 2