Cursor + Composerで書いたコードがShadcnを使った場合、都度都度コンポーネントを追加するのが面倒でした。
そのため必要なコンポーネントを追加するワンライナーを書きました。
問題
Shadcnでこんなエラーが出ます。
Module not found: Can't resolve '@/components/ui/input'
grep -R -E "@/components/ui/[a-zA-Z]+" . | sed -E "s|.*@/components/ui/([a-zA-Z]+).*|\1|" | xargs -n 100 -I {} /bin/bash -c 'npx shadcn add --yes {}'
解説
コマンド | 内容 |
---|---|
grep -R -E "@/components/ui/[a-zA-Z]+" |
該当行のimport文を抜き出す |
`sed -E "s | .@/components/ui/([a-zA-Z]+). |
xargs -n 100 -I {} /bin/bash -c 'npx shadcn add --yes {}' | shadcn add を行う |
注意点
- @/components/ui/ で始まっていなかったり改行が入っていたり、コンポーネント名がimport文と違うもの(があるのか不明ですが)場合には動きません
-
shadcn add
で聞かれるダイアログはすべてエンターキーを押すようになっています
参考
shadcn のオプション
Options:
-y, --yes skip confirmation prompt. (default: false)
-o, --overwrite overwrite existing files. (default: false)
-c, --cwd <cwd> the working directory. defaults to the current directory.
-a, --all add all available components. (default: false)
-p, --path <path> the path to add the component to.
-h, --help display help for command
Xargsで引数の渡し方