Как запустить преобразование 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 и выполнила преобразование для всех из них?


person frosty    schedule 21.04.2017    source источник


Ответы (2)


Если вы хотите запустить преобразование для всех файлов в каталоге, вы просто вводите путь к каталогу вместо пути к файлу. В приведенном выше примере выполните следующие действия:

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

Это запустит преобразование для всех ваших вложенных файлов js.

person frosty    schedule 21.04.2017

Ответ, предоставленный морозным, будет работать со всеми файлами в каталоге, а не только с файлами JS. Если вы хотите просто запустить преобразование для всех вложенных JS-файлов, используйте синтаксис ** glob:

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

Обратите внимание, что некоторые оболочки не распознают **, и вам придется сначала вручную включить его с помощью:

$ shopt -s globstar
person Yangshun Tay    schedule 04.01.2018