如何 运行 对所有文件进行 jscodeshift 转换?

How to run jscodeshift transform on all files?

我正在创建一个将替换所有实例的转换:

templateUrl: 'some/url/to/some.html'

template: require('some/url/to/some.html')

我这样做是因为我正在改变我们的 AngularJS 代码引入模板的方式。我打算让他们都使用 webpack 字符串加载器。

我已经开始转换了。但是现在我不知道如何 运行 它针对我项目中的所有文件。我在文档中看不到如何针对项目中的所有 .js 文件 运行。对于 运行 我的转换,我目前输入:

jscodeshift ./folder/myComponent.js -t ./tools/codemodes/template.js -d -p

此命令将 运行 我对 myComponent.js 文件进行转换,但我希望它对我项目中的所有 .js 文件进行 运行 转换。我需要用我当前的命令更改什么才能使其 select 所有 .js 文件,并且 运行 对所有这些文件进行转换?

如果要运行 对目录中的所有文件进行转换,只需输入目录路径,而不是文件路径。在上面的示例中,执行以下操作:

jscodeshift ./folder -t ./tools/codemod/templates.js -d -p

这将 运行 对所有嵌套的 js 文件进行转换。

frosty 提供的答案将 运行 目录中的所有文件,而不仅仅是 JS 文件。如果你只想 运行 对所有嵌套的 JS 文件进行转换,请使用 ** glob 语法:

jscodeshift ./path/to/folder/**/*.js -t ./tools/codemod/templates.js -d -p

请注意,某些 shell 无法识别 **,您必须首先使用以下命令手动将其打开:

$ shopt -s globstar