Babel.js 巴别塔递归蒸发

3zwjbxry  于 2022-12-08  发布在  Babel
关注(0)|答案(1)|浏览(241)

场景

请考虑以下目录结构

/views
  /one.js
  /two.js
/components
  /Header.js
  /Footer.js
/other
  ...

我需要用Babel来转换/views目录。我是通过编程来完成的,但是等效的cli命令看起来像这样:
babel views --out-dir .views
但是/views目录中的文件依赖于其他目录中的文件,即

/*
  views/one.js
*/

const Header = require('../components/Header');
...

考虑到这种依赖关系,我还需要对/components/Header.js进行转换。

问题

我如何使用Babel,可能与另一个库一起,* 只 * 移植指定的目录 * 和 * 任何递归依赖 *,而不 * 移植整个代码库(例如/other等)?

bf1o4zei

bf1o4zei1#

在Node中可能有多种获取依赖关系图的方法。你可以使用node-dependency-tree来获取你想用babel移植的依赖关系图。Madge是另一个可能的方法(内部使用dependency-tree)。
它是如何工作的?
依赖关系树接收一个起始文件,通过区域提取其声明的依赖关系,通过文件柜将这些依赖关系中的每一个解析为文件系统上的一个文件,然后递归地执行这些步骤,直到没有更多的依赖关系要处理。
当使用dependency-tree时,toList方法
返回修剪了重复子树的树的后序遍历(列表形式)。这对于绑定源文件很有用,因为列表给出了串联顺序。注意:您可以将相同的参数传递给dependencyTree()
toList使用的两个参数是

  • filename包含初始依赖项的文件的路径,即依赖关系图的入口点。这被模块filing-cabinet使用。
  • directory所有文件的路径,即解析依赖关系的根目录。这也被模块filing-cabinet使用。

此构建脚本使用CommonJS模块、Node v16.16.0和Babel 7.19.3。我相信您可以毫无问题地将其转换为ES模块,或者如果您愿意,可以基于Promise。

建置.js

第一个

相关问题