如何让Babel递归转译server目录下所有JS文件(含根目录文件)
解决Babel转译Server根目录及子目录所有JS文件的问题
你的问题出在glob匹配模式上:./server/**/*.js只会匹配server目录下所有子目录中的.js文件,不会包含server根目录本身的文件(比如index.js、model.js这些)。
这里有两种简单的修改方式,都能实现同时转译根目录和子目录的所有.js文件:
方式1:使用Brace Expansion简化匹配
调整你的脚本为:
"scripts": { "prepare": "babel ./server/{,**/}*.js --retain-lines -d ./dist" }
这个glob模式里的{,**/}是shell的 brace 扩展语法:
- 逗号前的空值匹配
server根目录 - 逗号后的
**/匹配server下所有层级的子目录
两者结合就能覆盖根目录+所有子目录的.js文件。
方式2:显式指定两个匹配路径
如果你觉得brace扩展不好理解,也可以直接把根目录和子目录的匹配路径分开写,用空格分隔:
"scripts": { "prepare": "babel ./server/*.js ./server/**/*.js --retain-lines -d ./dist" }
这种写法更直观,./server/*.js负责匹配根目录的.js文件,./server/**/*.js负责子目录的文件。
额外提示
如果是在Windows原生CMD环境下,brace扩展可能不生效,这时候推荐第二种方式,日常开发中用Git Bash、WSL或者macOS/Linux的终端,两种方式都能正常工作。
内容的提问来源于stack exchange,提问作者OctaviaLo
相关产品推荐
相关产品推荐

