簡體   English   中英

標准的babel預設要求

[英]standard babel presets requirements

為了設置webpack + babel + react,我被告知在.babelrc包含以下.babelrc

"presets": ["latest", "stage-0", "react"]

我想明白:為什么我應該使用babel預設,他們允許我做什么(除了babel本身)? 這是一個問題。 希望這不是基於意見的(就stackoverflow而言),它是關於babel如何工作的。

據我在文檔中所preset-latest組合了preset-es2015 + preset-es2016 + preset-es2017 據我所知,這些是即將推出的ES版本的正式接受功能,最新版本不僅僅是選擇ES2015,而是一次性選擇所有未來版本的簡寫。 規格不會改變,所以它足夠穩定,可以用於生產。

但是, stage-0 stage-1 stage-2 stage-3 - 它們是否代表了即將推出的ECMAScript版本仍然是非官方提案的功能,還是代表其他東西呢? Babel docs對此並不清楚。 那是第二個問題。

最后, 插件預設有什么區別?

...為什么我應該使用babel預設,他們允許我做什么...

Babel預設方便地定義了一組Babel插件,這樣您就不必明確聲明要在.babelrc "plugins"下使用它們(或者在您聲明配置的任何地方)。

看看es2016預設的源代碼,你會看到我的意思......它只是輸出一系列插件: https//github.com/babel/babel/blob/master/packages/babel-預設es2016 / SRC / index.js

......(除了巴貝爾本身)?

Babel本身就是其插件的接口 它利用兄弟程序babylon ,一個acorn分支,為插件提供解析,檢查,然后操作程序源代碼的特定方式,以便根據您使用的插件添加所需的功能。

最后,插件和預設有什么區別?

如上所述,預設本身不包含功能,而是包含插件列表。 這些通常代表一些相關的功能組。 例如, stage-0預設將包含實現提議功能的所有插件,這些插件位於由TC39(ECMAScript的“管理機構”)定義的提交過程的第0階段。

您可能已經注意到預設是JavaScript文件而不是JSON。 這是因為預設定義的插件列表可以從配置中派生。 看看env預設,例如: https//github.com/babel/babel-preset-env/blob/master/src/index.js

但是,0階段,第1階段,第2階段,第3階段如何 - 它們是否代表了即將推出的ECMAScript版本仍然是非官方提案的功能,還是代表其他東西呢?

沒有“官方”提案。 任何人都可以提交提案。 但是,如果官方的意思是該提案是否得到認真考慮,則由1)在此過程中處於什么階段以及2)社區普遍考慮其作為新功能的價值。 然而,你應該總是接受一些鹽的提議,即使是在最后階段它們是否會被接受,正如我們在Object#observe經歷的那樣,它在最后一分鍾刪除了

我也不明白為什么"modules": false以及為什么有“env”設置並且env有自己的預設配置。

最后,我發現這篇文章在我們的.babelrc中有什么? 解釋得很好,例如

其次,我們將模塊設置為false以確保導入語句保持原樣(反對將它們轉換為需要)。 我們這樣做是為了讓Webpack能夠靜態分析我們的代碼以生成更高效的bundle。

最后,我們為Jest提供了一個特定於環境的覆蓋,這是我們選擇的測試框架。 由於Jest在節點中運行,我們需要將我們的導入轉換為需求,並定位我們當前正在處理的任何節點運行時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM