摘要:下的包含很多匹配規則正則表達式,每一條代表加載什么類型的資源文件,上面寫的就是加載樣式文件,并使用和加載。現在問題來了,我想喝瓶茅臺自動添加瀏覽器產商前綴。沒問題,強大的生態圈給你提供了,一個更高大上的。
開始 webpack 之旅
npm install webpack --save-dev
這里如果沒有指定 -g全局安裝,那么需要調用 node_modules 下的 webpack.js 來執行,因為非全局安裝沒有添加環境變量
嘗嘗鮮,做點 webpack必須的第一步:編寫 webpack.config.js
// webpack.config.js module.exports = { // 兩個必須參數: entry: "", // 入口文件,寫路徑即可 output: { // 打包后文件,有兩個參數: filename: "", // 文件名,"[name]"表示使用原名,"[hash]"使用哈希值 path: "", // 文件夾路徑,對著官方敲,path.resolve(__dirname, "文件夾名"),需先導入 publicPath: "", // 上線地址,例如 http://ningtaostudy.cn }, };
現在碗和米飯有了,怎么端起來吃呢
直接在命令行運行 webpack,再加點料:
webpack --display-reasons --progress --colors --display-modules --config # webpack 配置文件名(換個碗吃飯)
在 npm 腳本里寫指令(偷懶讓別人幫你盛飯),接著命令行里運行 npm run webpack:
{ "scripts": { "webpack": "webapck --progress --colors" } }飯吃到了,沒有菜(webpack 插件)怎么行呢
打包 html 的插件 html-webpack-plugin。慣例第一步 npm install,接著在 webpack.config.js 里配置插件,有了 entry 和 output 出頭鳥,我們知道該寫一個 plugin 了:
// webpack.config.js const htmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { plugins: [ new htmlWebpackPlugin({ filename: "[name]-[hash].html", template: "index.html", inject: "head", kill: "bill", }), ], };
讓我們來品品小當家的菜:
filename 很好,不就入口文件嗎
template 你不用說,我知道是模板,相對于配置文件的路徑
inject 我就不遵從開發最佳實踐,就要在head里加載js文件,打我呀
kill 殺死比爾,純屬虛構。這是自定義的模板,模板里調用,下面舉個栗子:
<%= htmlWebpackPlugin.options.kill %> bill
上面代碼一樣一樣的。老夫斗膽說一句,這里模板引擎類似 jsp,但還是 js 語法
去官網看看 小當家
來瓶酒(loaders)吧,生活美滋滋loader 用來加載資源文件,諸如圖片、css之類的,這樣我們就可以在 .js 里導入 css,你沒聽錯,用起來我也沒有在蒙你
最簡單常用來加載 css 的兩個 loader:
npm install style-loader css-loader --save-dev # style-loader 用來插入 style 標簽 # css-loader 用來加載 css 代碼,此 loader 居下
話不多說,開車:
// webpack.config.js module.exports = { modules: { rules: [ { test: /.css$/, use: [ "style-loader", "css-loader", ], }, ], }, };
看起來嵌套挺多的哈,不過很簡單。modules 下的 rules 包含很多匹配規則(正則表達式),每一條代表加載什么類型的資源文件,上面寫的就是加載 .css 樣式文件,并使用 style-loader 和 css-loader 加載。
現在問題來了,我想喝瓶茅臺(自動添加瀏覽器產商前綴)。沒問題,強大的 webpack 生態圈給你提供了 postcss-loader,一個更高大上的 loader。這個時候我們都知道只需要改一下 use 數組:
[ "style-loader", { loader: "css-loader", options: { importLoaders: 1 }, }, "postcss-loader" ]
數組的項可以是對象,這樣我們的 loader 就能帶 options 里的參數,等同于:
use: "style-loader!css-loader?importLoaders=1!postcss-loader"
至于為什么要帶這樣的參數,這是因為一個 @import 引發的血案webpack-dev-server 大廚來也
我是誰,我從哪里來,我又該到哪里去
日益繁重的前端工作下,沒有人能阻擋我們偷懶的步伐。。webpack 只是一個打包工具,即使我們能帶 --watch 自動編譯,但瀏覽器還得手動刷新(心中一個臥槽,尼瑪還有這種操作,曾經學習的一年里自己起碼動手刷新瀏覽器點了 10000 次,忍不住吐槽瀏覽器刷新按鈕就不能做一個浮動的嗎,還得移動大半個屏幕,我鼠標少說走了 1000m 了)。很好,在靈長類動物面前都不是問題:
npm install webpack-dev-server -D # 這個不是重點,縮寫而已
接下來配置 webpack,其實官網很詳細了,還帶中文的,比個贊
// webpack.config.js module.exports = { devServer: { contentBase: "./dist", // 根目錄,就像 apache 的 www 文件夾 }, };
然后呢臥槽?沒錯,好了,輸入吧腫瘤君:
webpack-dev-server --open
偷懶神(package.json)在此:
{ "scripts": { "start": "webpack-dev-server --open --color" } }
再運行 npm start,這次連 run 都省了,,,
好了,以上就是初步了解 webpack 了,再總結一下吧配置項一覽:
// webpack.config.js module.exports = { entry: "", output: {}, module: { rules: [], }, plugins: [], devServer: {}, devtool: "inline-source-map", // 開發環境下調試專用,快速定位錯誤文件位置 };
常用 loader:
加載 html:html-webpack-plugin、html-loader
加載 css:style-loader、css-loader、sass/less-loader
加載 es6:babel-loader
加載圖片、json 等文件:file-loader、url-loader(轉base64)、image-loader(壓縮)、json-loader
上面的這些 loader 都可以去 npmjs 官網 上查看詳細的配置
-loader 在 webpack 2+ 不能省略;html 插件和 loader(加載模板)不能混著用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84840.html
摘要:我是布小禪,一枚自學萌新,跟著我每天進步一點點吧說了這么多暫時也就夠了,那么就告辭吧 文章目錄 ?? 前言 ??? 作者簡介 ??文件操作?1??、open函數...
摘要:因此,本文將會以一些正經的嚴謹的有深度的大概吧的課題,慢慢的接觸人工智能的相關知識。 Before The Beginning ????近年,技術圈炒的最火的兩個話(ba)題(gua)不外乎就是人工智障智能以及炒幣區塊鏈了,這個系列文章我主要以一個小菜鳥的角度一步一步的對人工智能的相關知識做一點了解,也算是一個顫顫巍巍追著AI浪潮公交車的社會主義五好青年,咳咳,扯遠了...其實對于人工...
摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運,我不曉得。我只曉得,不認命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
摘要:我從今年的月份開始在知乎上連續回答前端開發相關的問題,至今已有將近三個月,回顧寫過的一百多條回答,不少是給迷茫的前端工作者的建議。今天我把我的思考提煉整理成文,希望能給予在迷茫中前行中的前端學習工作者一些有用的建議。 本文首發于知乎專欄——前端指南作者:Mark MFS老師轉載請注明來源。 我從今年的2月份開始在知乎上連續回答前端開發相關的問題,至今已有將近三個月,回顧寫過的一百多條回...
摘要:直達第一課體驗第二課基礎類型和入門高級類型第三課泛型第四課解讀高級類型第五課什么是命名空間回顧第二課的時候為了更好的講解基礎類型所以我們講解了一部分高級類型比如接口聯合類型交叉類型本節課我會把剩余高級類型都講完知識點摘要本節課主要關鍵詞為自 直達 第一課, 體驗typescript 第二課, 基礎類型和入門高級類型 第三課, 泛型 第四課, 解讀高級類型 第五課, 什么是命名空間(na...
閱讀 1315·2023-04-26 01:28
閱讀 2065·2021-11-08 13:28
閱讀 2315·2021-10-12 10:17
閱讀 2280·2021-09-28 09:46
閱讀 4141·2021-09-09 09:33
閱讀 3719·2021-09-04 16:40
閱讀 1076·2019-08-29 15:21
閱讀 2689·2019-08-26 17:17