webpack二(以webpack4.x起步)

一.基本安裝

首先我們要創建一個目錄,初始化npm,以及在本地安裝webpack:復制代碼
mkdir webpackapp && cd webpackapp復制代碼
npm init -y復制代碼
npm install --save-dev webapck復制代碼
現在我們看一下我們創建的目錄以及目錄下的結構復制代碼

二.簡單實用webpack

我們先全局安裝webpack: npm install -g webpack復制代碼
此時,我們可以執行命令:webpack -v來查看webpack的版本號。復制代碼
我們在根目錄下新建一個文件:hello.js,并在其中輸入代碼。復制代碼
function hello(str) { alert(str); } hello('hello world!');復制代碼
這時,我們在命令行中輸入:復制代碼
webpack hello.js bundle.js復制代碼
然而,預期的結果和想象的不一樣:復制代碼
The CLI moved into a separate package: webpack-cli Would you like to install webpack-cli? (That will run npm install -D webpack-cli) (yes/NO)復制代碼
復制代碼
The CLI moved into a separate package:webpack-cli. Please install 'webpack-cli' in addition to webpack itself to use the CLI. ->when using npm: npm install webpack-cli -D ->when using yarn: yarn add webpack-cli -D復制代碼
報出這兩種任意一種的結果的意思是什么呢? 翻譯成中文: CLI(命令行工具)已經轉移到了一個單獨的包webpack-cli中。 除了webpack自身外,請額外安裝webpack-cli來使用CLI。 -> 使用npm安裝:npm install webpack-cli -D ->使用yarn安裝:yarn add webpack-cli -D復制代碼
也就是說,在以前的webpack版本中CLI(命令行工具)是存在于webpack中的,而現在呢,它自己獨立出來了,單獨地放在一個單獨webpack-cli包中。所以呢,現在想要使用CLI(命令行工具)就必須安裝webpack-cli才行。復制代碼
安裝webpack-cli:復制代碼
npm install webpack-cli -D復制代碼
再次運行:復制代碼
webpack hello.js bundle.js復制代碼
發現還是報出:復制代碼
The CLI moved into a separate package: webpack-cli Would you like to install webpack-cli? (That will run npm install -D webpack-cli) (yes/NO)復制代碼
這時,我們就要全局安裝webpack-cli:復制代碼
npm install webpack-cli -g復制代碼
現在,我們再試一下。復制代碼
webpack hello.js bundle.js復制代碼
結果又出現了新情況:復制代碼
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 ./hello.js bundle.js Module not found: Error: Can't resolve 'bundle.js' in 'C:\Users\Administrator\Desktop\webpackapp' @ multi ./hello.js bundle.js復制代碼
翻譯成中文: 配置警告: “mode”選項尚未設置。將“mode”選項設為“development”或“production”以啟用此環境的默認設置。 multi錯誤 ./ hello.js bundle.js 未發現模塊:錯誤:無法解析’C:/Users/你的用戶名/Desktop/webpack-test’中的bundle.js @ multi ./hello.js bundle.js復制代碼
這里的提示就是告訴我們,存在的第一個問題就是沒有配置webpack的mode選項,默認的有production和development兩種模式可以設置,因此我們嘗試設置為development模式,在命令行中輸入:復制代碼
webpack --mode development復制代碼
我們看到進行了打包并顯示了Hash、Version、Time、Build at信息,表明已經可以打包。不過,仍然有錯誤提示:復制代碼
ERROR in Entry module not found: Error: Can't resolve './src' in 'C:\Users\Administrator\Desktop\webpackapp'復制代碼
翻譯成中文:復制代碼
未找到入口模塊發生錯誤:錯誤:無法解析:'C:\Users\Administrator\Desktop\webpackapp'復制代碼
它的意思就是,表明webpack4.x是以項目根目錄下的'./src'作為入口,但是我們的項目中缺乏該路徑,因此我們在根目錄下創建一個src文件夾,事實上,webpack4.x以'./src/index.js'作為入口,單單創建src文件夾而沒有index.js文件仍然會報錯,因此我們:復制代碼
將hello.js移動到'./src'中,并重新命名為'index.js'.復制代碼
我們在運行一次: webpack index.js bundle.js復制代碼
它還會提示can.t resolve相關的錯誤。復制代碼
這種錯誤的原因是:webpack4.x的打包已經不能用'webpack 文件a 文件b' 這種方式打包了,而是在命令行中直接運行'webpack --mode development'或者'webpack --mode production'這種方式來完成打包。其中,入口文件是'./src/index.js',輸出路徑是'./dist/main.js'。其中,src目錄中的index.js文件需要我們手動的去創建,而dist目錄及dist目錄下的main.js文件它會自動生成。所以說呢,這種'webpack 文件a 文件b'的打包方式已經不適用了,而是改為直接運行:復制代碼
webpack --mode development復制代碼
復制代碼
webpack --mde production復制代碼
出現下面這種情況說明打包成功:復制代碼
C:\Users\Administrator\Desktop\webpackapp>webpack --mode development Hash: c66758f7d1a4004b7b60 Version: webpack 4.5.0 Time: 608ms Built at: 2018-4-6 00:42:40 Asset Size Chunks Chunk Names main.js 2.88 KiB main [emitted] main Entrypoint main = main.js [./src/index.js] 65 bytes {main} [built]復制代碼

不過每次都要輸入這個命令,非常麻煩,我們在package.jsonscripts中加入兩個成員:

"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev":"webpack --mode development", "build":"webpack --mode production" }復制代碼
以后在打包的過程中,我們只需要執行npm run dev就相當于執行webpack --mode development, 執行npm run build就相當于執行webpack --mode production復制代碼
我們如果需要配置webpack指令的其他參數,只需要在webpack –mode production/development后加上其他參數即可,如: webpack --mode development --watch --progress --display-modules --colors --display-reasons復制代碼
當然,這也可以寫入package.json的scripts之中。復制代碼
總結: 我們可以將以上探索進行整理總結,首先是注意事項: 1、webpack-cli必須要全局安裝,否則不能使用webpack指令; 2、webpack也必須要全局安裝,否則也不能使用webpack指令。 3、webpack4.x中webpack.config.js這樣的配置文件不是必須的。 4、默認入口文件是./src/index.js,默認輸出文件./dist/main.js。復制代碼
配置步驟: 1、創建工程目錄; 2、初始化工程目錄:npm init。 3、全局安裝webpack-cli。 4、全局安裝webpack。 5、webpack –mode development/production進行打包,可在package.json中配置dev和build的腳本,便只需運行npm run dev/build,作用相同。 6、在webpack –mode development/production可串聯設置其他參數。復制代碼

今天就講到這里吧,后續會繼續更新,別忘了關注了哦!


轉載于:https://juejin.im/post/5ac65a376fb9a028cc6174f3

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280696.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280696.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280696.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云中間件是什么-阿里云中間件介紹

阿里云中間件是什么?這其實是一個比較虛的概念。廣義的中間件范圍很廣。起溝通作用的都可以認為是中間件。甚至ODBC這樣的東西你也可以認為是中間件。 使用了中間件之后,以前直接連接的前臺應用程序和數據庫之前就多了個中間件,現在前臺程序把請求發給…

C# 圖片、文件等加入Project Resources

一、目的 1.編譯后,只想有一個exe文件,不想外部文件引用,直接運行exe文件即可。 2.不會出現文件丟失情況。 二、操作 1.右擊project ->properties->Resource,左上角選擇Image(或其他類型) 2. 點擊…

jfinal使用shiro注解大體流程

2019獨角獸企業重金招聘Python工程師標準>>> 上一篇答題梳理了jfinal整合shiro的流程,jfinal讀取shiro注解,這一篇將作為補充。 1.JFinalShiroPlugin作者為shiro的RequiresRoles,RequiresPermissions, RequiresAuthent…

chrome 快捷鍵取消_如何使用鍵盤快捷鍵在Chrome和Firefox中固定和取消固定選項卡...

chrome 快捷鍵取消If you tend to open a lot of tabs in your browser, it can become difficult to find the tabs with your most used websites. Pinning tabs in your browser moves those tabs to the left and shrinks the tabs to only show the favicon, and you can …

.NET Conf China 2022參會指南速覽(內含超多福利)趕緊預約!???

12月充滿驚喜各種美好節日紛至沓來似在獎勵一年辛苦勞作的你12月的第一波福利.NET Conf China 承包啦立即掃碼預約加入.NET年度盛宴搶12月第一波驚喜!.NET Conf China 2022 .NET Conf China 2022是面向開發人員的社區峰會,延續 .NET Conf 2022 的活動&a…

python導入模塊--案例

1 導入模塊 1.1 問題 本案例要求先編寫一個star模塊,主要要求如下: 建立工作目錄 ~/bin/創建模塊文件 ~/bin/star.py模塊中創建pstar函數,實現打印50個星號的功能然后練習導入模塊,調用模塊中的函數: 在交互解釋器中導…

css常用命名

常用的CSS命名 頭:header 內容:content/container 尾:footer 導航:nav 側欄:sidebar 欄目:column 頁面外圍控制整體佈局寬度:wrapper 左右中:left right center 登錄條:l…

***關于WP的郵件無法發送問題的總結(原創)

1.用FTP打開 /wp-include/class-smtp.php ,最好是下載下來,搜索一下,查找到如下的代碼: $this->smtp_conn stream_socket_client($host . ":" . $port,$errno,$errstr,$timeout,STREAM_CLIENT_CONNECT,$socket_cont…

C# 簡單方式運行powershell文件/使用cmd命令運行ps1

一、目的、構想 1.C# winfrom編譯的tool 運行一個powershell文件。 2.只需要運行即可,不需要返回值。 3.網上部分資料需要額外添加dll。 3.已經有cmd執行命令的函數,能否直接在cmd運行? 4.在cmd黑色窗口輸入powershell 能進入powershell…

?.Net 7 AOT 徹底解析下(完結篇)

楔子:本篇是承繼前面三篇文章而來,分別為:.Net 7 的 AOT 和 CLR有什么區別?.Net 7 的 R2R,Crossgen2是什么?.Net 7 的AOT原理簡析通過以上三篇的基礎,本篇來徹底解析下AOT這門技術的底層原理。AOT此終,不再…

cmd暫停快捷鍵_是否有鍵盤快捷鍵可以暫停正在運行的CMD窗口的輸出?

cmd暫停快捷鍵When running a batch script, you may need or want to pause the output in the CMD window so that you can look things over. Is there an easy way to pause, then restart the output? Today’s SuperUser Q&A post has the answer to help with a re…

bash快捷鍵

Ctrl h :回退一個字符Ctrl f :光標前進一個字符Ctrl b :光標后退一個字符Ctrl w :刪除光標之前的一個字符串(進入剪切板)Ctrl u :刪除光標前的所有字符 (進入剪切板&#xff09…

J - 青蛙的約會(擴展歐幾里得)

https://vjudge.net/contest/218366#problem/J 第一步追及公式要寫對:ynk-(xmk)pL > (n-m)klpx-y 可以看出擴展歐幾里得原型,這里注意擴展歐幾里得求出的是任意解,非最優,要推出最小解k。 (n-m)xlygcd > (n-m)(x*(x-y)/gcd)…

C# 簡單方式解壓Zip文件/使用VS2019自帶功能

一、目的、構想 1.直接解壓zip文檔。 2.網上資料不少需要外部dll。 3. 找到可以不需要外部dll方法,分享。 二、code實現 using System.IO.Compression;string filePath "c:\Server\fileList"; string zipPath "C:\Server\Download\Auto.zip&quo…

在 Docker 中使用 flannel - 每天5分鐘玩轉 Docker 容器技術(60)

上一節我們安裝和配置了 flannel,本節在 Docker 中使用 flannel。配置 Docker 連接 flannel編輯 host1 的 Docker 配置文件 /etc/systemd/system/docker.service,設置 --bip 和 --mtu。這兩個參數的值必須與 /run/flannel/subnet.env 中 FLANNEL_SUBNET …

使用.NET7和C#11打造最快的序列化程序-以MemoryPack為例

譯者注本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通過本文解釋了他是如何將序列化程序性能提升到極致的;其中從很多方面(可變長度、字符串、集合等)解釋了一些性能優化的技巧,值得每一個開發人員學習,特別是框架的開…

永不丟失照片:防彈照片備份的完整指南

There’s nothing as precious and irreplaceable as your personal photos and, with a little forethought and planning, there’s no reason to ever feel the heartbreak of losing even a single one of them to theft, broken devices, or disaster. 沒有比您的個人照片…

C# 檢查當前系統已安裝的程序app/兩種方法檢測

一、目的、構思 1.檢測當前系統有沒有安裝某個程序,如果沒有就重新安裝。 2.在網上找到了兩種方法,可惜都找不到需要檢測的app。 二、code實現 1.查找注冊列表方式。要在winform的project使用,在console project 貌似找不到Microsoft.Win3…

Integer源碼解析

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/wangyangzhizhou/article/details/77196626 概況 Java的Integer類主要的作用就是對基本類型int進行封裝,提供了一些處理int類型的方法,比如int到Strin…

MySQL InnoDB存儲引擎

呵呵噠。。。 MySQL體系結構和存儲引擎 首先要搞懂的是什么是數據庫,什么是數據庫實例。 數據庫:物理操作系統文件或其他形式文件類型的集合。 實例:MySQL數據庫由后臺線程以及一個共享內存區組成,實例才是真正對數據庫進行操作的…