【问题标题】:Babelify the files in place, in multiple directories在多个目录中对文件进行 Babelify
【发布时间】:2016-05-22 07:39:32
【问题描述】:

如何使用babel 在不同目录中转译包含 ES6 内容的 JavaScript 文件?我希望结果在同一个目录中(例如,拥有foo/bar/index.js,我想通过覆盖它在同一个文件中获取 ES5 代码)。

要覆盖我使用的一个目录:

 babel lib/ -d lib

这适用于一个文件夹(覆盖lib 目录中的所有内容)。

如何对两个或多个目录执行相同的操作?例如,我该如何为 lib/bin/ 做到这一点?

【问题讨论】:

  • 另一种解决方案,可能是将所有文件和文件夹放在父文件夹中,然后将babel parent_folder/ -d parent_folder应用于父文件夹:)
  • 你为什么要这样做?
  • @naomik 我正在设置一个工具来自动化npm publish 的事情,所以我在 npm 上发布了转译的代码。我想保持文件结构和npm publish之后到git checkout .
  • 有无数种方法可以构建/打包您的代码,而无需破坏源文件并使用 git 回滚它们...

标签: javascript ecmascript-6 babeljs


【解决方案1】:

AFAIK babel CLI 不够复杂,无法在单个命令中支持此用例。但是,您可以连接两个命令来获得相同的结果:

babel lib/ -d lib && babel bin/ -d bin

或者您可以编写一个脚本来为您执行此操作,使用 gulp 或您选择的其他构建工具。例如(未经测试):

gulp.task('default', () =>
  gulp.src(['bin/**/*.js', 'lib/**/*.js'], { base: './' })
    .pipe(babel())
    .pipe(gulp.dest('.'))
)

【讨论】:

  • 我想我会以babel . -d . --ignore node_modules 左右结尾。谢谢! :)
【解决方案2】:

The codemod CLI 非常适合。

它只会修改你的文件:

codemod --plugin babel-transformer.js src/**/*.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2023-03-11
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多