摘要:是一個(gè)現(xiàn)代應(yīng)用程序的靜態(tài)模塊打包器,前端模塊化的基礎(chǔ)。作為一個(gè)前端工程師切圖仔,非常有必要學(xué)習(xí)。官網(wǎng)的文檔非常的棒,中文文檔也非常給力,可以媲美的文檔。建議先看概念篇章,再看指南,然后看和配置總覽。
webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器,前端模塊化的基礎(chǔ)。作為一個(gè)前端工程師(切圖仔),非常有必要學(xué)習(xí)。
webpack官網(wǎng)的文檔非常的棒,中文文檔也非常給力,可以媲美vue的文檔。建議先看概念篇章,再看指南,然后看API和配置總覽。看完指南教程后,需要自主動(dòng)手練習(xí)才能更加有影響,這里記錄下我搭建react開發(fā)環(huán)境的過程
準(zhǔn)備工作 安裝webpackyarn add webpack webpack-cli -D創(chuàng)建配置目錄結(jié)構(gòu)
config webpack.common.js webpack.dev.js webpack.prod.js scripts build.js // 構(gòu)建模式腳本 start.js // 開發(fā)模式腳本 src index.js package.json先嘗試一個(gè)簡單配置 配置啟動(dòng)腳本命令
package.json
... "license": "MIT", + "scripts": { + "start": "node ./scripts/start.js", + "build": "node ./scripts/build.js" + }, "devDependencies": { "webpack": "^4.35.2", "webpack-cli": "^3.3.5" } ...編寫webpack配置, 以 src/index.js 作為主入口,以 build為打包后的目錄
config/webpack.common.js
output path字段這里配置的絕對路徑
const path = require("path"); module.exports = { entry: "./src/index.js", output: { path: path.resolve(__dirname, "../build"), filename: "bundle.js" } }編寫開發(fā)模式運(yùn)行腳本
scripts/build.js
const webpack = require("webpack"); const webpackConfig = require("../config/webpack.common.js"); webpack(webpackConfig, (err, stats) => { if(err || stats.hasErrors()){ console.log("編譯失敗"); } });
webpack node接口文檔: https://www.webpackjs.com/api...
在入口編寫一點(diǎn)內(nèi)容src/index.js
console.log("hello")執(zhí)行 yarn build 命令,生成打包目錄
運(yùn)行生成的 `bundle.js`配置開發(fā)服務(wù)器 - webpack-dev-server 安裝dev服務(wù)器和合并配置工具
yarn add webpack-dev-server webpack-merge -D改寫webpack配置文件, common文件導(dǎo)出一個(gè)可傳參數(shù)的基本配置生成器, prod和dev文件使用webpack-merge將通用配置和各自模式下的配置進(jìn)行合并導(dǎo)出
config/webpack.common.js
const path = require("path"); function webpackCommonConfigCreator(options){ /** * options: * mode // 開發(fā)模式 */ return { mode: options.mode, entry: "./src/index.js", output: { filename: "bundle.js", path: path.resolve(__dirname, "../build"), } } } module.exports = webpackCommonConfigCreator;
config/webpack.prod.js
const webpackConfigCreator = require("./webpack.common"); const merge = require("webpack-merge"); const config = { } const options = { mode: "production" } module.exports = merge(webpackConfigCreator(options), config);
config/webpack.dev.js
const webpackConfigCreator = require("./webpack.common"); const merge = require("webpack-merge"); const config = { } const options = { mode: "development" } module.exports = merge(webpackConfigCreator(options), config);
script/build.js
const webpack = require("webpack"); const webpackConfig = require("../config/webpack.prod.js"); webpack(webpackConfig, (err, stats) => { if(err || stats.hasErrors()){ console.log("編譯失敗"); } });
yarn build 打包,輸出正常
配置 webpack-dev-serverconfig/webpack.dev.js
這里的contentBase選項(xiàng)是server模式下的output,開啟server后,webpack會實(shí)時(shí)編譯代碼到內(nèi)存
... + const path = require("path"); const config = { + devServer: { + contentBase: path.join(__dirname, "../dist") + } } ...
scripts/start.js
const webpack = require("webpack"); const webpackDevServer = require("webpack-dev-server"); const webpackConfig = require("../config/webpack.dev.js"); const compiler = webpack(webpackConfig); const options = Object.assign({}, webpackConfig.devServer, { open: true }) const server = new webpackDevServer(compiler, options); server.listen(3000, "127.0.0.1", () => { console.log("Starting server on http://localhost:8080"); })運(yùn)行命令 yarn start, 瀏覽器自動(dòng)彈出窗口,訪問 localhost:3000/bundle.js
相關(guān)鏈接
webpack4詳細(xì)教程,從無到有搭建react腳手架(二)
webpack4詳細(xì)教程,從無到有搭建react腳手架(三)
webpack4詳細(xì)教程,從無到有搭建react腳手架(四)
源碼github倉庫: https://github.com/tanf1995/W...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105479.html
摘要:相關(guān)鏈接詳細(xì)教程,從無到有搭建腳手架一配置插件,這兩個(gè)插件基本上是必配的了介紹每次打包時(shí)清理上次打包生成的目錄官網(wǎng)指南關(guān)于這個(gè)插件部分內(nèi)容已經(jīng)過時(shí)沒有更新,按照官網(wǎng)配置會出錯(cuò),所以參考上這個(gè)插件文檔來配置,文檔地址生成打 相關(guān)鏈接 webpack4詳細(xì)教程,從無到有搭建react腳手架(一) 配置插件 clean-webpack-plugin、 html-webpack-plugin...
摘要:相關(guān)鏈接詳細(xì)教程,從無到有搭建腳手架一詳細(xì)教程,從無到有搭建腳手架二詳細(xì)教程,從無到有搭建腳手架三管理打包后目錄結(jié)構(gòu)打包結(jié)構(gòu)如下修改配置通過相對目錄對資源命名前加上目錄名,效果后面的步驟在這里需要安裝一個(gè)大型的包,以為例安裝為第三 相關(guān)鏈接 webpack4詳細(xì)教程,從無到有搭建react腳手架(一) webpack4詳細(xì)教程,從無到有搭建react腳手架(二) webpack4詳細(xì)...
摘要:相關(guān)鏈接詳細(xì)教程,從無到有搭建腳手架一詳細(xì)教程,從無到有搭建腳手架二安裝配置創(chuàng)建,效果安裝配置創(chuàng)建效果配置模式修改配置現(xiàn)在編譯后的由動(dòng)態(tài)內(nèi)聯(lián)在中,需要分離到單獨(dú)的文件安裝插 相關(guān)鏈接 webpack4詳細(xì)教程,從無到有搭建react腳手架(一) webpack4詳細(xì)教程,從無到有搭建react腳手架(二) Css 安裝loader yarn add style-loader css...
摘要:寫在前面準(zhǔn)備學(xué)習(xí)一下和相關(guān)的東西,官方的腳手架看起來太繁瑣,所以打算自己來搭建一個(gè),參考了這個(gè)文檔從零搭建全家桶框架教程步驟上都差不多第一步,依賴總覽完成到我現(xiàn)在半成品的過程中,目前完成開發(fā)模式的相關(guān)操作,添加了按需加載的地步。 寫在前面 準(zhǔn)備學(xué)習(xí)一下react和webpack相關(guān)的東西,官方的腳手架看起來太繁瑣,所以打算自己來搭建一個(gè),參考了這個(gè)文檔從零搭建React全家桶框架教程;...
摘要:對的工作流程有點(diǎn)模糊,以及據(jù)官方文檔稱的升級,性能得到了極大的提升,而還是用的,于是決定從頭開始搭建一個(gè)適合團(tuán)隊(duì)的腳手架。保證各文件獲得一致的文件編碼和縮進(jìn)效果。這些在后面文章中,都會一個(gè)個(gè)涉及到,此處不做詳細(xì)展開。 前言 寫前端項(xiàng)目這么久了,以前用的 dva 框架,后來用過 create-react-app 框架,都需要針對團(tuán)隊(duì)做一些定制化的修改。對 webpack 的工作流程有點(diǎn)模...
閱讀 3590·2023-04-25 20:41
閱讀 2676·2023-04-25 16:40
閱讀 1446·2021-09-23 11:44
閱讀 1265·2021-09-10 10:51
閱讀 1695·2021-09-07 09:59
閱讀 1681·2019-12-27 12:08
閱讀 574·2019-08-30 15:44
閱讀 3346·2019-08-30 11:08