Сниппеты WebStorm (Live Template). Как использовать название папки, а не файла
Создаю сниппет для React в Webstorm (там они называются Live Templates), для того чтобы при вводе, например, tsc и нажатии на клавишу tab создавалась такая структура
import React, { FC } from 'react'
import * as s from './styled'
interface Props {
};
const SomeComponent: FC<Props> = (props) => {
return (
<s.Container>
</s.Container>
)
}
export default SomeComponent
Так как в настройке сниппета используется $TM_FILENAME_BASE$, то название компонента берётся по названию файла. Т.е. если мы создали файл some-component, и в нём воспользуемся сниппетом, то имя функции будет SomeComponent.
Но проблема сейчас в том, что по структуре у меня идёт папка с названием компонента, а в нём файл index.tsx
Т.е.
не src > components > some-component.tsx
а src > components > some-component > index.tsx
И поэтому название функции ставится Index
Как настроить сниппет, чтобы он название функции делал по названию папки, а не по названию файла?
Мой текущий код сниппета:
import React, { FC } from 'react'
import * as s from './styled'
interface Props {
$END$
};
const $TM_FILENAME_BASE$: FC<Props> = (props) => {
return (
<s.Container>
</s.Container>
)
}
export default $TM_FILENAME_BASE$
Ответы (1 шт):
я бы предложила изменить expression для переменной $TM_FILENAME_BASE$ на capitalize(camelCase(regularExpression(filePath(), ".*\\\\(.*)\\\\[a-z]*.[a-z]*", "$1"))); groovyScript из ответа в комментарии не работает в WebStorm