使用babel

时间:2016-07-14 18:28:58

标签: javascript node.js babeljs

这是我的文件结构

/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编译的babel,并且在我将它们用于服务之前,它的所有内容都包含层次结构。它们不在节点服务器上。这将是传统的php / apache托管。巴贝尔只是出于交际目的。

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

1 个答案:

答案 0 :(得分:2)

听起来您可以考虑使用Browserify并结合babelify将文件转换为ES5。

基本上,捆绑所有" main.js"树中的文件,您可以运行以下(假设类Unix操作系统):

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

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

这将在bundle.js旁边创建一个名为main.js的文件,其中包含main.js的已转换内容及其任何依赖项(使用{{1}加载}或require())。

要让import将ES6转换为ES5,您需要安装一些常见的Babel预设,例如babelify,并将它们作为参数传递给es2015(请参阅this) :

babelify

(或使用.babelrc文件)