摘要:在執(zhí)行時(shí)會(huì)先用把配置文件轉(zhuǎn)成代碼再繼續(xù)處理。只要你把配置文件命名成,就會(huì)用相應(yīng)的去轉(zhuǎn)換一遍配置文件。它沒(méi)改的文件名,但配置文件和各種腳本都是完全的語(yǔ)法。這是提供的一個(gè)命令行工具,你可以用它代替去執(zhí)行文件。總結(jié)得益于,幾乎已經(jīng)是現(xiàn)在的標(biāo)配了。
概述
我最近在整理一個(gè) Ionic + Webpack 的項(xiàng)目模板,因?yàn)轫?xiàng)目代碼都是 ES6 的,所以我也想在其他地方也用 ES6 。其中一個(gè)地方就是 webpack.config.js 。目前有三種方法可以做到這一點(diǎn),不過(guò)各有利弊。
方法 1:升級(jí)到 Node.js 4Node.js 4 合并了 io.js ,所以自然帶有所有 io.js 的特性,其中就包括部分 ES6 特性的支持。不過(guò)目前的版本 (4.2.1) 只支持部分特性,尤其是以下幾個(gè)很常用的都不支持:
函數(shù)默認(rèn)值
解構(gòu)和其相關(guān)的所有功能
ES6 模塊
具體支持程度可看 這里 。Babel 達(dá)到了 71% ,Node.js 4 達(dá)到了 53% ,Node.js 5 也只達(dá)到了 59% 。真是不容樂(lè)觀。
總結(jié):這個(gè)方法適合依賴少數(shù) ES6 特性,又確定使用 Node.js 4 及以上版本的人,不能算是大眾方案。
方法 2:webpack.config.babel.js這個(gè)最簡(jiǎn)單,把 webpack.config.js 改名成 webpack.config.babel.js 就行。一切命令照舊。Webpack 在執(zhí)行時(shí)會(huì)先用 Babel 把配置文件轉(zhuǎn)成 ES5 代碼再繼續(xù)處理。一切 Babel 支持的語(yǔ)言特性都可以用。
這是一個(gè) Webpack 支持,但文檔里完全沒(méi)有提到的特性 (應(yīng)該馬上就會(huì)加上)。只要你把配置文件命名成 webpack.config.[loader].js ,Webpack 就會(huì)用相應(yīng)的 loader 去轉(zhuǎn)換一遍配置文件。所以要使用這個(gè)方法,你需要安裝 babel-loader 和 babel-core 兩個(gè)包。記住你不需要完整的 babel 包。
理論上這種做法支持任何 loader ,所以你也可以用 CoffeeScript 或者其他語(yǔ)言去寫(xiě),只要有相應(yīng)的 loader 就行。
這個(gè)方法還有個(gè)好處,如果你在 webpack.config.babel.js 里 import 了其他文件,那個(gè)文件也會(huì)被 Babel 編譯。比如:
// webpack.config.babel.js // 這個(gè)文件也可以用 ES6 寫(xiě) import config from "./some-config" export default { // webpack config }
不過(guò),如果你打算自己寫(xiě)腳本去加載 Webpack 的配置,這個(gè)方法就不管用了。
總結(jié):這個(gè)方法適合那些不在乎 Node.js 版本,只使用 webpack 和 webpack-dev-server 命令,不打算自己寫(xiě)腳本或過(guò)多折騰,但想使用完整的 ES6 特性的人。
方法 3:用 babel-node這是我在 這個(gè)問(wèn)題 中看到的。其中提問(wèn)者提到的 React Starter Kit 挺有意思。它沒(méi)改 webpack.config.js 的文件名,但配置文件和各種腳本都是完全的 ES6 語(yǔ)法。這是怎么做到的呢?
關(guān)鍵就在于 babel-node 。這是 Babel 提供的一個(gè)命令行工具,你可以用它代替 node 去執(zhí)行文件。文件會(huì)被 Babel 編譯后再交給 node 命令執(zhí)行。
讓我們看看 React Starter Kit 如何利用這一點(diǎn)的。首先它用 package.json 里定義的 scripts 來(lái)代替 webpack 命令。可以看到它完全使用了 babel-node 命令代替 node 。比如:
{ "scripts": { "bundle": "babel-node tools/run bundle", ... } }
這樣就可以用 npm run bundle 來(lái)執(zhí)行相應(yīng)的任務(wù)了。這個(gè)命令會(huì)會(huì)先調(diào)用 tools/run.js,然后調(diào)用 tools/bundle.js,然后加載 tools/webpack.config.js 。整個(gè)流程中的所有文件都是用 ES6 和 ES7 語(yǔ)法寫(xiě)的,非常整潔漂亮。
總結(jié):這個(gè)方法適合需要自己寫(xiě)腳本并且想用完整的 ES6 語(yǔ)法的人。不過(guò) babel-node 因?yàn)橐幾g,而且換成結(jié)果會(huì)存在內(nèi)存中,所以命令執(zhí)行時(shí)間會(huì)比單純使用 node 要長(zhǎng)(主要是啟動(dòng)時(shí)間)。這點(diǎn)就見(jiàn)仁見(jiàn)智了。記住不要在生產(chǎn)環(huán)境下用 babel-node 。
總結(jié)得益于 Babel ,ES6 幾乎已經(jīng)是現(xiàn)在的標(biāo)配了。在不折騰的情況下用用 ES6 是大家都能接受的結(jié)果。所以我推薦大部分人用方法 2 。但如果需要寫(xiě)點(diǎn) npm run xxx 的腳本,難免又會(huì)覺(jué)得不能用 ES6 有點(diǎn)不一致。這種情況我覺(jué)得要么就都用 ES6 ,要么就干
脆不用。因?yàn)槲覀€(gè)人覺(jué)得一致性比用不用 ES6 更加重要。build 腳本勉強(qiáng)也算是后端的一部分,而我們不能強(qiáng)求所有后端代碼都寫(xiě)成 ES6 的(比如自己寫(xiě)個(gè) server)。
Allow webpack.config.js to be written in ES6
ES6 Compatible Table
StackOverflow - How to use ES6 in Webpack config
React Starter Kit
Babel CLI
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86113.html
摘要:上篇文章中簡(jiǎn)單介紹了的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)頁(yè)面一個(gè)頁(yè)面兩個(gè)文件。本文將介紹如何使用對(duì)具有較為規(guī)范的結(jié)構(gòu)的項(xiàng)目進(jìn)行構(gòu)建。這說(shuō)明監(jiān)測(cè)到了文件的變化,但是我們的加載的文件并沒(méi)有變。后續(xù)還會(huì)更深入地學(xué)習(xí),希望和大家一同進(jìn)步。 上篇文章中簡(jiǎn)單介紹了webpack的最基本用法,且項(xiàng)目結(jié)構(gòu)十分簡(jiǎn)單,只有一個(gè)html頁(yè)面、一個(gè)css頁(yè)面、兩個(gè)js文件。本文將介紹如何使用webpac...
摘要:不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。命令會(huì)用這個(gè)配置,生成的結(jié)果都會(huì)給文件名加,文件也會(huì)壓縮。可用工具介紹啟動(dòng)調(diào)試服務(wù)器,使用作為配置,不直接生成物理文件,直接內(nèi)存級(jí)別響應(yīng)調(diào)試服務(wù)器資源請(qǐng)求。 AngularJS不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。有人稱之為MVWhatever框架,意思是使用AngularJS,你可以參考任意范式進(jìn)行應(yīng)用開(kāi)發(fā),無(wú)論是MVC、還是MVVVM都信手拈來(lái)...
摘要:簡(jiǎn)介來(lái)構(gòu)建用戶界面的庫(kù),不是框架關(guān)注于層虛擬單向數(shù)據(jù)流這些概念如何使用下載文件也可以使用,需要用到的模塊介紹是編寫(xiě)組件的一種語(yǔ)法規(guī)范,可以看為是的擴(kuò)展,它支持將和混寫(xiě)在一起,最后使用編譯為常規(guī)的,方便瀏覽器解析編寫(xiě)第一個(gè)例子使用編寫(xiě)組件 react簡(jiǎn)介 來(lái)構(gòu)建用戶界面的庫(kù),不是框架 關(guān)注于view層 虛擬DOM 單向數(shù)據(jù)流 JSX這些概念 如何使用react 下載文件 rea...
摘要:和類似的預(yù)處理器還有等。的用處非常多,包括給自動(dòng)加前綴使用下一代語(yǔ)法等,目前越來(lái)越多的人開(kāi)始用它,它很可能會(huì)成為預(yù)處理器的最終贏家。 webpack實(shí)戰(zhàn) 查看所有文檔頁(yè)面:全棧開(kāi)發(fā),獲取更多信息。快馬加鞭,加班加點(diǎn),終于把這個(gè)文檔整理出來(lái)了,順便深入地學(xué)習(xí)一番,鞏固知識(shí),就是太累人,影響睡眠時(shí)間和質(zhì)量。極客就是想要把事情做到極致,開(kāi)始了就必須到達(dá)終點(diǎn)。 原文鏈接:webpack實(shí)戰(zhàn),原...
摘要:今天介紹怎么編譯的各種函數(shù)和語(yǔ)法。對(duì)于相關(guān)的匹配規(guī)則,除了匹配結(jié)尾的文件,還應(yīng)該去除文件夾下的第三庫(kù)的文件發(fā)布前已經(jīng)被處理好了。它需要在我們項(xiàng)目的入口文件中被引入,或者在中配置。個(gè)人網(wǎng)站原文鏈接系列教程二編譯 今天介紹webpack怎么編譯ES6的各種函數(shù)和語(yǔ)法。敲黑板:這是webpack4版本哦, 有一些不同于webpack3的地方。 >>> 本節(jié)課源碼 >>> 所有課程源碼 1....
閱讀 1186·2023-04-26 00:34
閱讀 3363·2023-04-25 16:47
閱讀 2129·2021-11-24 11:14
閱讀 3113·2021-09-26 09:55
閱讀 3737·2019-08-30 15:56
閱讀 3223·2019-08-29 16:57
閱讀 1916·2019-08-26 13:38
閱讀 2674·2019-08-26 12:22