[英]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.