babel的一些包的相關總結

參考:https://babeljs.io
https://www.babeljs.cn

babel-***、@babel/***的包總是佔一堆,但是又不太清楚是幹嘛的,所以特地看了下文檔,整理和摘抄如下:

@babel/core

核心功能,babel從版本7開始用@開頭的scope包,老版本是babel-core,其他的包都是一樣的規律

@babel/plugin-***

很多,不列舉了,單獨配置plugin看上去也不是什麼好方法,有需要可以查閱
https://babeljs.io/docs/en/plugins

@babel/preset-***

  • preset是預先確定的一些plugin的集合,babel官方的preset目前有: @babel/preset-env、@babel/preset-flow、@babel/preset-react、@babel/preset-typescript,當然還有非官方的
  • 沒有特殊要求就用babel-preset-env吧,帶年份和帶stage的都不建議用了
  • 可以自定義preset,不過一般使用應該不太需要

@babel/polyfill

不是必需的。如果是在寫lib,不要使用@babel/polyfill,因爲其中的一些實現會污染全局
兼容新特性,不會將代碼編譯成低版本,如果要使用,要用-S而不是-D。據說是往全局對象和內置對象的prototype上添加方法來實現的
在webpack中使用,可以這樣寫,每個官方的preset都有自己的選項說明,比如
https://babeljs.io/docs/en/babel-preset-react

{
  "presets": [
  	["@babel/preset-env", { useBuiltIns: "usage" }],
  ]
}

@babel/runtime

不是必需的。babel用到一些helpers,這些helpers都指向(引用)@babel/runtime,這些代碼是可複用的,用@babel/plugin-transform-runtime可以達到這一目的
據說會把高版本代碼轉譯成低版本,但是不會往全局對象和內置對象的prototype上添加方法,所以如果遇到實例方法(是新特性的情況)就會出問題

其他

babel-loader,這個其實是webpack裏用的東西
babel-eslint、babel-jest,很多這些格式的都是相關工具(eslint、jest)爲了支持babel寫的包

https://blog.csdn.net/huangpb123/article/details/82229071
這一篇寫的比我詳細,我對polyfil和runtime應該在什麼時候用還是不太清楚,可以看看,還有這個
https://www.jianshu.com/p/a16a34eb597e

看了一天文檔只寫出了這麼點東西,不過前端的環境搭建真是越來越複雜了QAQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章