webpack4從安裝到使用入過的那些坑

官網(wǎng)中文教程:https://www.webpackjs.com/guides/installation/
npm文檔:https://docs.npmjs.com/

1、全局安裝

安裝 webpack 前要確保已經(jīng)下載 node.js 最新版本node.js官網(wǎng)地址

目前使用命令行安裝的 webpack 默認為最新版本(以下我使用了全局安裝生百。官網(wǎng)建議本地安裝仗扬,這可以使我們在引入破壞式變更(breaking change)的依賴時艺配,更容易分別升級項目籍滴。)

npm i webpack -g

當我想確認是否安裝成功执庐,輸入 webpack -v 后出現(xiàn):

One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
- webpack-cli (https://github.com/webpack/webpack-cli)
  The original webpack full-featured CLI.
- webpack-command (https//github.com/webpack-contrib/webpack-command)
  A lightweight, opinionated webpack CLI.
We will use "npm" to install the CLI via "npm install -D".
Which one do you like to install (webpack-cli/webpack-command):

提示我們必須安裝一個 CLI胁附,有兩個版本酒繁,Windows 安裝 webpack-cli ,Mac 安裝 webpack-command控妻,輸入以下命令:

npm i webpack-cli -g//當前安裝時的版本為3.0.8

然后再輸入 webpack -v 確認是否安裝成功:

webpack -v
4.16.0

至此州袒,webpack4 才算安裝完成(注意:如果 webpack 安裝在全局,那么 CLI 也需要裝在全局)弓候。

webpack安裝過程截圖

2郎哭、初次打包

在舊版本 webpack 中,將 index.js 文件打包成 bundle.js 文件使用的是如下命令(webpack 入口文件 出口文件):

webpack ./src/index.js ./dist/bundle.js

結(jié)果報錯如下:

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.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

ERROR in multi ./src/index.js ./dist/bundle.js
Module not found: Error: Can't resolve './dist/bundle.js' in 'E:\文檔\webproject\homework\webpack'
 @ multi ./src/index.js ./dist/bundle.js main[1]

上面警告說 mode 沒有指定菇存,可以指定值為 production 或 development夸研,不指定默認為 production。
同時還有一個報錯依鸥,沒有找到模塊亥至,不能被解析(resolve)。
原因是,webpack4 的打包已經(jīng)不能用 webpack 文件a 文件b 的方式(實際開發(fā)使用時也不推薦該方法)姐扮。

webpack初次打包報錯截圖

因此需要先建一個 package.json 文件絮供,方法是先在根目錄下使用命令行創(chuàng)建一個項目:

webpack init

默認配置的話一路回車,就能在根目錄下看到 package.json 文件了茶敏。


webpack init過程截圖

然后在在 package.json 中 scripts 中加入以下兩行代碼:

"dev": "webpack --mode development",
"build": "webpack --mode production"

然后在命令行中執(zhí)行

npm run build//(或dev)

就會在 dist 目錄下創(chuàng)建一個打包好的 main.js 文件(如果需要更改出口文件名壤靶,需要使用配置文件 webpack.config.js)。

3惊搏、css-loader

前提:打包 css 文件需要依賴 style-loader 和 css-loader(安裝和使用方式可查看官網(wǎng))贮乳。

  • css-loader:使 webpack 可以處理 css 文件。
  • style-loader:新建一個 style 標簽胀屿,把 css-loader 處理過的文件放進去塘揣,然后插入到 HTML 標簽中。

在入口文件 index.js 中引入 css 文件

require('../css/style.css');

使用 webpack 命令后報了以下錯誤:

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.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

ERROR in ./src/css/style.css 1:3
Module parse failed: Unexpected token (1:3)
You may need an appropriate loader to handle this file type.
> h1 {
|     background-color: #00ffff;
|     color: #fff;
 @ ./src/js/index.js 2:0-27

原因是需要在路徑前加 style-loader!css-loader! :

require('style-loader!css-loader!../css/style.css');
webpack打包css報錯截圖

更多 css-loader 方法可以查看 https://github.com/webpack-contrib/css-loader

4宿崭、本地安裝

全局安裝并且配置過 json 文件后亲铡,想進行本地安裝,輸入命令行 npm i webpack --save-dev 后葡兑,出現(xiàn)以下錯誤:

npm ERR! Refusing to install package with name "webpack" under a package
npm ERR! also called "webpack". Did you name your project the same
npm ERR! as the dependency you're installing?
npm ERR!
npm ERR! For more information, see:
npm ERR!     <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\helen\AppData\Roaming\npm-cache\_logs\2018-07-16T14_34_05_927Z-debug.log

上述錯誤表明目錄下有一個同名 "webpack" 文件奖蔓,于是找到目錄下 package.json 文件,將文件中 "name": "webpack" 改為其他名字即可讹堤。

5吆鹤、webpack-dev-server

通過命令行 npm i webpack-dev-server -g 全局安裝了 webpack-dev-server,也在 config.js 中加了

var HtmlWebpackPlugin = require('html-webpack-plugin'); 

之后命令行輸入 webpack --open 報錯如下:

Error: Cannot find module 'html-webpack-plugin'

原因是項目安裝的是全局的 webpack-dev-server 洲守,而 webpack 安裝在項目本地疑务,需要在本地安裝 webpack-dev-server,同時需要安裝插件 html-webpack-plugin

npm i html-webpack-plugin --save-dev

6梗醇、webpack.optimize.UglifyJsPlugin

引入 webpack.optimize.UglifyJsPlugin 插件時報錯如下:

Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead.

原因是在 webpack4 之后移除了該方法知允,需要安裝 uglify-js 插件,然后在 webpack.config.js 中改為:

var UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
...
//壓縮js
     optimization: {
        minimizer: [
            new UglifyJsPlugin({
                uglifyOptions: {
                    compress: false
                }
            })
        ]
    },
};

7叙谨、extract-text-webpack-plugin

使用 extract-text-webpack-plugin 后報錯如下:

DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead

由于 webpack4 中 extract-text-webpack-plugin 插件不再使用温鸽,換成 mini-css-extract-plugin,文檔:https://www.npmjs.com/package/mini-css-extract-plugin

在此感謝那些參考過的文檔的作者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末手负,一起剝皮案震驚了整個濱河市涤垫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竟终,老刑警劉巖蝠猬,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異统捶,居然都是意外死亡榆芦,警方通過查閱死者的電腦和手機敦姻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歧杏,“玉大人,你說我怎么就攤上這事迷守∪蓿” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵兑凿,是天一觀的道長凯力。 經(jīng)常有香客問我,道長礼华,這世上最難降的妖魔是什么咐鹤? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮圣絮,結(jié)果婚禮上祈惶,老公的妹妹穿的比我還像新娘。我一直安慰自己扮匠,他們只是感情好捧请,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棒搜,像睡著了一般疹蛉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上力麸,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天可款,我揣著相機與錄音,去河邊找鬼克蚂。 笑死闺鲸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的陨舱。 我是一名探鬼主播翠拣,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼游盲!你這毒婦竟也來了误墓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤益缎,失蹤者是張志新(化名)和其女友劉穎谜慌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莺奔,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡欣范,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恼琼。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡妨蛹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晴竞,到底是詐尸還是另有隱情蛙卤,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布噩死,位于F島的核電站颤难,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏已维。R本人自食惡果不足惜行嗤,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垛耳。 院中可真熱鬧栅屏,春花似錦、人聲如沸堂鲜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泡嘴。三九已至甫恩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酌予,已是汗流浹背磺箕。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抛虫,地道東北人松靡。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像建椰,于是被迫代替她去往敵國和親雕欺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

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

  • 1 Webpack 1.1 概念簡介 1.1.1 WebPack是什么 1棉姐、一個打包工具 2屠列、一個模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,638評論 0 16
  • 版權(quán)聲明:本文為博主原創(chuàng)文章乃坤,未經(jīng)博主允許不得轉(zhuǎn)載苛让。 webpack介紹和使用 一沟蔑、webpack介紹 1、由來 ...
    it筱竹閱讀 11,028評論 0 21
  • 1. 新建一個文件夾,命名為 webpack-cli , webpack-cli 就是你的項目名,項目名建議使用小...
    魯大師666閱讀 1,463評論 1 3
  • Webpack學習總結(jié) 此文只是自己學習webpack的一些總結(jié)狱杰,方便自己查閱瘦材,閱讀不變,非常抱歉7禄宇色! 下載安裝:...
    Lxs_597閱讀 936評論 0 0
  • 據(jù)說貓是在漢朝,從印度跟隨佛教一起進入中國的颁湖,所以人們對貓有一種對神靈一樣的敬畏。民間還說貓有十八條生命例隆,死后只能...
    滴水皈依閱讀 284評論 0 0