如何在所有文件上运行jscodeshift转换?

时间:2017-04-21 15:04:22

标签: jscodeshift

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

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文件运行。我需要更改当前命令以使其选择所有.js文件,并针对所有文件运行转换?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

请注意,某些炮弹无法识别**,您必须首先手动启用它:

$ shopt -s globstar