使用babel连接文件

这是我的文件结构

/base.js /foo/main.js /foo/bar/main.js /baz/main.js 

我总共需要4个文件。 一个树的每个叶子节点都包含“包含”文件的所有内容。 这里是文件的内容。

base.js

 //anything really 

/foo/main.js

 include 'base.js' 

/foo/bar/main.js

 include 'base.js' include '/foo/main.js' 

/baz/main.js

 include 'base.js' 

这些“包含”就像php包含的那样,它们在babel的编译时并不是传统的从es2016 / es2016包含的。 我希望每个文件都是为以前版本的ES编译的,并且在把它们放到服务之前,它的所有内容都包含在层次结构中。 他们不会在节点服务器上。 这将是传统的PHP / Apache主机。 巴别尔只是为了发挥作用。

我知道我可以使用--out-file选项将所有js编译成单个文件,我可以导入和导出模块,但是如何让babel连接不同的文件,而无需编写和维护cli命令,只需要将“include '指令在文件的顶部。

这听起来像你可以考虑使用Browserify ,结合babelify将文件转换为ES5。

基本上,要将树中的所有“main.js”文件捆绑在一起,可以运行下面的命令(假设一个类Unix操作系统):

 for file in */**/main.js do browserify -t [ babelify ] $file > $(dirname $file)/bundle.js done 

(你可以很容易地把它放在shell脚本中)

这将在bundle.js旁边创build一个名为bundle.js的文件,它将包含main.js的转译内容及其任何依赖项(使用require()import加载)。

为了得到babelify将ES6转换成ES5,你需要安装一些像es2015这样的通用Babel预设,并把它们作为parameter passing给babelify (参见本文 ):

 browserify -t [ babelify --presets [ es2015 ] ] $file 

(或使用.babelrc文件)