摘要:三集成所需要的依賴和在或加載模塊時(shí),對(duì)代碼進(jìn)行預(yù)處理,語(yǔ)法轉(zhuǎn)化為語(yǔ)法。到目前位置,用于開(kāi)發(fā)應(yīng)用的環(huán)境已經(jīng)配置好了。
本系列主要學(xué)習(xí)webpack的配置。webpack自己間接的用過(guò)不少次,但是自己配置卻沒(méi)多少次,所以特地寫寫文章,學(xué)習(xí)webpack的配置,有不恰當(dāng)?shù)牡胤剑瑲g迎指正。這次配置 babel 。
若你對(duì)webpack的概念還不了解,先查看相應(yīng)文檔webpack中文文檔
一、初始化一個(gè)webpack項(xiàng)目npm init -y // 初始化項(xiàng)目,會(huì)添加一個(gè)package.json npm install --save-dev webpack // 下載webpack,并記錄到package.json的devDependencies中二、新建webpack.config.js文件
指定入口和出口。
// webpack.config.js const path = require("path"); module.exports = { entry: "./src/index.js", output: { filename: "bundle.js", path: path.resolve(__dirname, "dist") }, mode:"development" };
當(dāng)前項(xiàng)目目錄為
dist // 手動(dòng)新建,因出口指定為此文件夾。 |---index.html src |---index.js package-lock.json package.json webpack.config.json三、集成babel
所需要的依賴:babel-loader、babel-core、babel-preset-env、babel-polyfill、babel-runtime和babel-plugin-transform-runtime
babel-loader:在import或加載模塊時(shí),對(duì)es6代碼進(jìn)行預(yù)處理,es6語(yǔ)法轉(zhuǎn)化為es5語(yǔ)法。
babel-core:允許我們?nèi)フ{(diào)用babel的api,可以將js代碼分析成ast(抽象語(yǔ)法樹(shù)),方便各個(gè)插件分析語(yǔ)法進(jìn)行相應(yīng)的處理.
babel-preset-env:指定規(guī)范,比如es2015,es2016,es2017,latest,env(包含前面全部)
babel-polyfill:它效仿一個(gè)完整的ES2015+環(huán)境,使得我們能夠使用新的內(nèi)置對(duì)象比如 Promise,靜態(tài)方法比如Array.from 或者 Object.assign, 實(shí)例方法比如 Array.prototype.includes 和生成器函數(shù)(提供給你使用 regenerator 插件)。為了達(dá)到這一點(diǎn), polyfill 添加到了全局范圍,就像原生類型比如 String 一樣。
babel-runtime babel-plugin-transform-runtime:與babel-polyfill作用一樣,使用場(chǎng)景不一樣。
為了更簡(jiǎn)單明了,把依賴的安裝分開(kāi),不一次性安裝所有依賴。
1、安裝babel-loader和babel-corenpm install --save-dev babel-loader babel-core
在webpack.config.js中添加
module: { rules: [ { test: /.js$/, exclude: /node_modules/, loader: "babel-loader" // test 符合此正則規(guī)則的文件,運(yùn)用 loader 去進(jìn)行處理,除了exclude 中指定的內(nèi)容 } ] }2、安裝babel-preset-env
npm install babel-preset-env --save-dev
新建 .babelrc 文件
//babelrc { "presets": ["env"] }3、安裝babel-polyfill
此依賴用于開(kāi)發(fā)應(yīng)用,會(huì)在全局添加新的方法,會(huì)污染全變量。
npm install --save babel-polyfill
在入口文件本文為index.js的頂部添加
import "babel-polyfill"
在webpcak.config.js中將babel-polyfill添加到entry數(shù)組中
module.exports = { entry: ["babel-polyfill", "./src/index.js"], ...
最終webpack.config.js為
const path = require("path"); module.exports = { entry: ["babel-polyfill", "./src/index.js"], output: { filename: "bundle.js", path: path.resolve(__dirname, "dist") }, mode:"development", module: { rules: [ { test: /.js$/, exclude: /node_modules/, loader: "babel-loader" // test 符合此正則規(guī)則的文件,運(yùn)用 loader 去進(jìn)行處理,除了exclude 中指定的內(nèi)容 } ] } };
項(xiàng)目目錄為
dist // 手動(dòng)新建,因出口指定為此文件夾。 |---index.html src |---index.js .babelrc package-lock.json package.json webpack.config.json
到目前位置,用于開(kāi)發(fā)應(yīng)用的babel環(huán)境已經(jīng)配置好了。
執(zhí)行
npx webpack --config webpack.config.js
便可在dist中看到打包出來(lái)的bundle.js文件
4.babel-runtime 和 babel-plugin-transform-runtime如果你不是開(kāi)發(fā)應(yīng)用,而是開(kāi)發(fā)提供給第三方利用的框架的話,將第3步的polyfill改為這兩個(gè)依賴。它們?cè)诰植刻砑有路椒ǎ晃廴救肿兞?/p>
npm install --save-dev babel-runtime babel-plugin-transform-runtime
.babelrc文件
{ "presets": ["env"], "plugins": ["transform-runtime"] }
用于開(kāi)發(fā)框架的babel環(huán)境已經(jīng)配置好,
同樣執(zhí)行
npx webpack --config webpack.config.js
便可在dist中看到打包出來(lái)的bundle.js文件
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94131.html
摘要:建立項(xiàng)目首先,創(chuàng)建工程目錄現(xiàn)在我們已經(jīng)創(chuàng)建了我們要開(kāi)發(fā)應(yīng)用程序的文件夾,接著需要添加一個(gè)文件。這里為了版本的一致性,我把里的版本號(hào)前面刪除了。為此,需要?jiǎng)?chuàng)建一個(gè)名為的文件,用來(lái)配置。 showImg(https://segmentfault.com/img/bVboiHi?w=1000&h=625); 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 在過(guò)去的一年和...
摘要:本質(zhì)就是一個(gè)編譯器,通過(guò)將源代碼解析成抽象語(yǔ)法樹(shù)將源代碼的結(jié)果一系列轉(zhuǎn)換生成目標(biāo)代碼的將目標(biāo)代碼的轉(zhuǎn)換成代碼。項(xiàng)目構(gòu)建三開(kāi)發(fā)環(huán)境本地服務(wù)器搭建源碼下載地址參考資料入門阮一峰中文文檔中文網(wǎng) 注:以下教程均在 windows 環(huán)境實(shí)現(xiàn),使用其他操作系統(tǒng)的同學(xué)實(shí)踐過(guò)程可能會(huì)有些出入。 ??在上一章 webpack 項(xiàng)目構(gòu)建:(一)基本架構(gòu)搭建 我們搭建了一個(gè)最基本的 webpack 項(xiàng)目,現(xiàn)...
摘要:配置是一個(gè)編譯器,是前端開(kāi)發(fā)中的一個(gè)利器。其中,插件是為了告訴只編譯批準(zhǔn)的內(nèi)容,相當(dāng)于及最新版本。安裝用法將下面內(nèi)容添加到文件中更多細(xì)節(jié)參考插件。 webpack - babel配置 babel是一個(gè)javascript編譯器,是前端開(kāi)發(fā)中的一個(gè)利器。它突破了瀏覽器實(shí)現(xiàn)es標(biāo)準(zhǔn)的限制,使我們?cè)陂_(kāi)發(fā)中可以使用最新的javascript語(yǔ)法。 通過(guò)構(gòu)建和babel,可以使用最新js語(yǔ)法進(jìn)行...
前言 什么是webpack 本質(zhì)上,webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。 webpack 有哪些功能(代碼轉(zhuǎn)換 文件優(yōu)化 代碼分割 模塊合并 ...
前言 什么是webpack 本質(zhì)上,webpack 是一個(gè)現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler)。當(dāng) webpack 處理應(yīng)用程序時(shí),它會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖(dependency graph),其中包含應(yīng)用程序需要的每個(gè)模塊,然后將所有這些模塊打包成一個(gè)或多個(gè) bundle。webpack 有哪些功能(代碼轉(zhuǎn)換 文件優(yōu)化 代碼分割 模塊合并 自...
閱讀 1756·2021-11-25 09:43
閱讀 1792·2021-11-24 10:41
閱讀 3111·2021-09-27 13:36
閱讀 818·2019-08-30 15:53
閱讀 3575·2019-08-30 15:44
閱讀 871·2019-08-30 14:03
閱讀 2581·2019-08-29 16:38
閱讀 1005·2019-08-29 13:23