本人微信公衆號:前端修煉之路,歡迎關注。
最近開始想要維護一個我的的公衆號,初心是爲了督促本身堅持作筆記,將學習的東西整理記錄下來。更進一步的要求是提高動手能力、文章寫做能力,和分享經驗。終極目標就是爲了維護一個我的的品牌形象,像提到@阮一峯、@張鑫旭、@情封、@justjavac 等等業內知名的IT技術人員同樣,而後用本身的品牌形象獲取一些合法的經濟利益,用來改善生活。畢竟努力學習、認真工做,說到底仍是爲了更好的生活。html
鑑於以上種種緣由和目的,我開通了微信公衆號,並將文章更新到SegmentFault、掘金,進一步擴大傳播度。目前原創文章已經寫了7期。在這個過程當中主要有如下幾點體會:前端
一、沒法堅持原創日更的囧境。java
由於個人寫做動機是本身的學習筆記、工做筆記的整理。也就是說,我要有不斷學習和工做的過程,而後將這個過程遇到的問題和解決方法記錄整理下來。這就須要強制性的養成一些習慣,而且壓縮掉一些本身之前花時間作的事情。目前這幾件事情作到。可是我沒法處理掉臨時性突發的事件,尤爲是處理起來比較費時間的事情。一旦將事情解決完畢,本身已經筋疲力盡,無意無力再堅持日更了。node
目前想到的解決思路是,首先依然是要堅持原創日更文章,內容集中在學習筆記、工做筆記和一些反思等。而後一旦有臨時性突發事件耗費本身大量時間和經歷的狀況發生,致使可能次日沒法更新文章,能夠選擇轉載一些優秀的文章。webpack
目前取得了一位公衆號做者@蘇南 的轉載權限。但願之後能得到更多的做者轉載權限。git
二、沒有文章可寫的囧境。web
以前的幾篇文章主要是本身遇到的一些問題,文章的連續性並不強。若是是想保證能日更,那就必須有新的問題出現,而且是值得用來寫文章的。並非說隨便的一個問題,例如標點符號錯誤,語法語句錯誤,就能拿過來寫一篇文章的。再有就是字數也不能太少,不然直接在SF上發一個筆記就行了。另外估計只有20、30的文章,是小學生寫的做文吧~ 沒有什麼閱讀的價值。npm
因此我想到的解決思路是,作一個系列。例如如今的《webpack入門學習手記》系列。首先是我在學習webpack,而後就是webpack的各方面知識點足夠我更新一段時間,最後就是文章內容足夠多,也足夠豐富。因此這個系列就誕生了。json
當這個系列更新完畢以後,也不用慌,還有ES六、Vue等等系列均可以寫。另外就是一些非系列的性的文章,能夠穿插到日更裏面。這樣公衆號的內容,也就豐富起來,也不會擔憂沒有文章、沒有原創文章了。segmentfault
三、收到粉絲留言和打賞的喜悅。
個人更新思路是,文章是先寫到SF平臺,利用Markdown快速寫好文章,而後更新到掘金,最後更新到微信公衆平臺,等到次日定時羣發消息。
這個過程當中,我SF的聲望已經突破了1.5K,掘金和SF的粉絲關注度也在不斷增長。每次看到又有新的粉絲和點贊收藏,就有繼續寫下去動力。由於掘金和SF不一樣於微信,都是互相不曾謀面之人,僅僅是由於文章的好壞而關注和收藏的。
相比於SF和掘金,公衆號的粉絲大部分是個人親朋好友。他們被我強制性的要求關注個人公衆號。其實他們中有不少人,根本就不知道我寫的是什麼,可是依然關注了公衆號。很是感謝他們的支持~
相比於粉絲數的增加,最開心的仍是收到了真金白銀的打賞。只不過目前打賞一直沒有進到個人帳戶,不知道微信是怎麼弄的。其實這幾期裏面,給我打賞最多就是我爸媽了,我每寫的一篇文章他們都會下方默默的打賞我1元錢~ 可憐天下父母心啊~
不一樣於別的公衆號打賞,我設置的金額是1元、2元、5元,小額打賞。由於我以爲打賞金額太高,反而會嚇到一些朋友。能給我打賞一元,就已經很是開心了。
綜上所述,不管遇到的問題有多難,也會義無反顧的堅持下去。
如下是正文。
上一篇webpack入門學習手記(一),主要是介紹了webpack的核心概念,是整個學習過程的基礎知識。接下來按照官方文檔給出的指南手冊依次進行。另外我會根據我的理解和操做過程,對文檔內容有一些修改,若有出入請參考原文。
要想使用webpack,前提是必須安裝Node.js,另外請保證使用最新的穩定版本。不然Node的版本太低,會致使意想不到的問題出現。
官方手冊中給出了兩種安裝方式,一種是本地安裝(Local Installation)和全局安裝(Global Installation)。在黃色的警告框處,明顯提示說,不建議全局安裝,由於會將webpack鎖定到指定的版本,另外也會在不一樣的webpack版本的項目中,構建失敗。因此咱們直接使用本地安裝便可。
首先安裝最新版本的webpack:
npm install --save-dev webpack
由於使用的webpack v4 以上的版本,因此再安裝cli工具:
npm install --save-dev webpack-cli
注意:其實我在安裝的時候,使用的不是
npm
命令,而是cnpm
。由於衆所周知的緣由,國內下載安裝會比較慢甚至卡頓,因此使用了淘寶鏡像,能夠自行百度下具體說明~ 如下文章中提到的全部npm
命令地方,都請改爲cnpm
。
使用本地安裝的好處是,當升級項目時會比較方便。若是正確執行了上面的兩個命令,會在本地目錄多出一個node_modules
目錄和一個package.json
文件。打開package.json
文件,內容以下:
package.json
{ "devDependencies": { "webpack": "^4.27.1", "webpack-cli": "^3.1.2" } }
這就是咱們剛纔安裝依賴。此時的package.json
只有3行的代碼,若是是第一次接觸webpack而且是第一次接觸node的朋友,會被手冊中接下來的代碼產生疑問。由於接下來手冊添加了一段scripts
代碼。咱們在項目中,添加這段代碼以前,先來執行下面這個命令:
npm init
這個命令會初始化一個新的package.json
,由於咱們在安裝webpack
時生成了一個package.json
,因此接下來的內容會直接追加到文件中。
執行npm init
這個命令以後,會向你提問一系列問題,若是以爲默認信息沒有問題的話,直接回車就行。新生成的package.json
相似以下:
package.json
{ "devDependencies": { "webpack": "^4.27.1", "webpack-cli": "^3.1.2" }, "name": "webpackstudy", "description": "webpack入門學習手記", "version": "1.0.0", "main": "index.js", "dependencies": { "ajv-errors": "^1.0.1", ... }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git@git.dev.tencent.com:siberiawolf0307/webpackStudy.git" }, "author": "siberiawolf", "license": "MIT" }
由於生成的dependencies
內容過多,我直接省略掉了。此時就能找到指南手冊中的scripts
了。咱們在默認的test
後面添加上官網中的代碼便可。以下:
package.json
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "webpack --config webpack.config.js" }
補充:在使用默認
package.json
是,會讓用戶填寫license
。由於對開源協議比較陌生,我特地去查了一下使用何種開源協議。通過對比,我發現使用 MIT 協議是比較適合個人。MIT 協議是比較寬鬆的協議。此協議容許別人以任何方式使用你的代碼同時署名原做者,但原做者不承擔代碼使用後的風險,固然也沒有技術支持的義務。jQuery和Rails就是 MIT 協議。
上面的添加scripts.start
,實際上是運行webpack
,而且運行的配置文件是webpack.config.js
。由於手冊進行到這裏,並無添加任何的 js 文件,因此先不要執行這個命令~ 咱們後面再來學習。
說明:我將本小節代碼託管到了騰訊雲開發者平臺,若是須要查看這節內容,請查找
Installation
目錄便可。
若是你真的動手操做了一遍安裝
步驟,而且是初學者,那麼請先刪除掉你文件夾下的package.json
文件。由於接下來按照手冊給出的示例,咱們是在一個全新的目錄下進行操做的,請注意這一點。
由於咱們在執行安裝
小節是,確定已經在一個工做目錄下,例如個人工做目錄是webpackStudy
,因此文檔中建立新目錄mkdir webpack-demo && cd webpack-demo
省略掉。下面的代碼示例都是在這個工做目錄下。
由於已經刪除掉了package.json
文件,接下來咱們新生成一個:
npm init -y npm install webpack webpack-cli --save-dev
npm init -y
,多了一個參數-y
,就是說不用再詢問咱們填寫參數了,直接使用了默認值。另外由於在本工做目錄下已經安裝過webpack
了,此時執行的速度會很是快。
接下來,咱們建立相應的html、js文件。
project
webpackStudy |- package.json + |- index.html + |- /src + |- index.js
src/index.js
function component() { let element = document.createElement('div'); // Lodash, currently included via a script, is required for this line to work // 這段英文註釋的意思是說,在index.html文件中已經引入了Lodash這個script標籤了,因此能正常使用 element.innerHTML = _.join(['Hello', 'webpack'], ' '); return element; } document.body.appendChild(component());
index.html
<!doctype html> <html> <head> <title>Getting Started</title> <script src="https://unpkg.com/lodash@4.16.6"></script> </head> <body> <script src="./src/index.js"></script> </body> </html>
在工做目錄下建立index.html
文件,並建立src
目錄,而後建立index.js
文件。文件的組織形式如上。而後複製粘貼html和js代碼。
接下來咱們修改一下package.json
文件,刪掉main
入口,並設置private
,防止意外發布代碼。
package.json
{ "description": "", + "private": true, - "main": "index.js" }
須要注意的是,在html頁面中,咱們引入了Lodash這個js文件。Lodash是一個JS實用工具庫,很是適合於遍歷數組、字符串和對象等。
在index.js
文件中,並無顯示的聲明須要引入Lodash。這樣就會形成如下幾個問題:
index.js
中的代碼依賴於外部的擴展庫。若是咱們使用webpack
來管理JS呢?看看狀況如何~
首先調整一下咱們的工做目錄。建立一個dist
目錄,用來存放壓縮和優化以後的代碼。而咱們以前建立的src
目錄,用來存放原始代碼。將以前建立的index.html
文件移動到dist
目錄下。最終文件結構以下:
project
webpackStudy |- package.json + |- /dist + |- index.html - |- index.html |- /src |- index.js
由於咱們要在index.js
中顯示聲明Lodash,因此須要先在項目目錄下安裝好,執行命令:
npm install --save-dev lodash
注意這裏,我使用的是--save-dev
參數。這樣會將Lodash添加到package.json
的devDependencies
屬性下。
接下來,經過import
命令,顯示引用Lodash。
src/index.js
+ import _ from 'lodash'; + function component() { let element = document.createElement('div'); - // Lodash, currently included via a script, is required for this line to work element.innerHTML = _.join(['Hello', 'webpack'], ' '); return element; } document.body.appendChild(component())
而後須要更新下index.html
文件,由於咱們修改了依賴js的方式。
dist/index.html
<!doctype html> <html> <head> <title>Getting Started</title> - <script src="https://unpkg.com/lodash@4.16.6"></script> </head> <body> - <script src="./src/index.js"></script> + <script src="main.js"></script> </body> </html>
最後,咱們執行下面的命令:
npx webpack
而後打開index.html
文件,就會看到 Hello webpack
。
由於咱們在執行npx webpack
時,沒有使用執行的配置文件,因此使用默認值,也就是會在dist
目錄下生成main.js
。而這個打包以後的文件,就在index.html
引入。
若是打開main.js
,會發現Lodash已經在這個文件中了。webpack已經幫咱們添加好了。
在webpack4 中,不用指定配置文件。可是這樣可擴展性就差了。因此咱們建立一個webpack.config.js
文件。
在工做目錄下建立webpack.config.js
文件。內容以下:
webpack.config.js
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') } };
而後執行以下命令:
npx webpack --config webpack.config.js
執行完以後結果跟以前同樣~
其實也能夠不指定--config webpack.config.js
這個參數。若是添加了webpack.config.js
文件,webpack
會自動使用這個配置文件。
可是假如文件的名字不是webpack.config.js
時,就須要用到--config
這個參數了。尤爲是當配置文件被拆分紅多個文件時,會很是有用。
以前咱們直接在命令行中運行的方式叫作CLI,如今經過配置文件,具有更高的靈活性。能夠指定loader、plugins 等。
還記得在開始小節中,咱們添加的scripts.start
嗎?如今咱們一樣的在package.json
中添加一段腳本,這樣咱們每次運行程序是,只須要簡單調用腳本便可。
package.json
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --config webpack.config.js" }
而後在命令行執行以下命令:
npm run build
npm run build
這段命令,就是制定package.json
中的scripts腳本,其中build
就是咱們剛纔定義的內容。
說明:
我將本小節代碼託管到了 騰訊雲開發者平臺,若是須要查看這節內容,請查找Getting Started
目錄便可。
以上就是指南手冊中的Getting Started部分。總結一下主要內容:
下一篇筆記整理webpack官方文檔的指南手冊剩餘部分,敬請關注。
(待續)
相關文章