fzf-make is a command line tool that executes commands using fuzzy finder with preview window. Currently supporting make, npm, pnpm, yarn, just, task.
🛠️ Features
- Select and execute a make target or (npm | pnpm | yarn) scripts or just recipe or task using fuzzy-finder with a preview window by running
fzf-make! - Execute the last executed command(By running
fzf-make --repeat.) - Command history
- Support make, npm, pnpm, yarn, just, task.
- Support passing additional arguments to the command using popup window. The UI looks like: https://github.com/kyu08/fzf-make/pull/447
- [make] Support
includedirective - [npm] Support workspace (collect scripts from all
package.jsonfiles in the workspace usingnpm query).- Note that the minimum supported npm version for workspace support is
8.16.0(required fornpm query).
- Note that the minimum supported npm version for workspace support is
- [pnpm] Support workspace(collect scripts all of
package.jsonin the directory where fzf-make is launched.) - [yarn] Support workspace(collect all scripts which is defined in
workspacesfield in rootpackage.json.) - [just] Support execution inside of directory of justfile.
- [task] Support
includeswith both file and directory paths, following Taskfile schema. (fzf-make is just using output oftask --list-all --json)- Note that the minimum supported task version is
v3.44.0.
- Note that the minimum supported task version is
- (Scheduled to be developed) Support config file
📦 Installation
macOS
Homebrew
# install
# update
Arch Linux
fzf-make can be installed from the AUR using an AUR helper. For example:
NixOS / Nix (package manager)
fzf-make can be run from the repository (latest version)
Or from the nixpkgs (channel >= 23.05)
Note You may need to enable experimental feature. In that case, execute the following command to enable them
echo "experimental-features = nix-command flakes" | tee ~/.config/nix/nix.conf
OS-independent method
Cargo
# Or build from the latest source
💡 Usage
Run target using fuzzy finder
- Execute
fzf-makein the directory you want to run make target, or (npm | pnpm | yarn) scripts or just recipe. - Select command you want to execute. If you type some characters, the list will be filtered.
Run target from history
- Execute
fzf-makein the directory you want to run make target, or (npm | pnpm | yarn) scripts or just recipe.(For just, we support execution inside of directory of justfile.) - Press
Tabto move to the history pane. - Select command you want to execute.
How fzf-make judges which command runner can be used
make
Whether makefile(file name should be one of GNUmakefile, makefile, Makefile) is in the current directory.
npm
Whether package.json and package-lock.json are in the current directory or package-lock.json exists in an ancestor directory.
pnpm
Whether package.json and pnpm-lock.yaml are in the current directory.
yarn
Whether package.json and yarn.lock are in the current directory.
just
Whether justfile or .justfile are in the current directory or ancestor directories. If the lower cased file name matches justfile or .justfile, it is treat as a justfile. (e.g. justFile or .JustFile are also valid.)
Commands Supported
| Command | Description |
|---|---|
fzf-make |
Launch fzf-make |
fzf-make --repeat / fzf-make -r / fzf-make repeat |
Execute last executed target |
fzf-make --history / fzf-make -h / fzf-make history |
Launch fzf-make with the history pane focused |
fzf-make --help / fzf-make help |
Show help |
fzf-make --version / fzf-make -v / fzf-make version |
Show version |
Example Aliases
To simplify the usage of fzf-make, you can define aliases in your shell configuration. Below is an example configuration that works for most shells (bash, zsh, fish, etc.):
💻 Development
- Clone this repository
- Change the codes
- Run
make run
To execute test, run make test(needs nextest).
nix
Or you can use nix to create a development shell with the project dependencies.
Within the repo root, execute the following command:
nix develop
👥 Contribution
- Contributions are welcome!
- If you have a Feature request, please create an issue first.
- If you have added fzf-make to some package manager, please let me know. (or please send a PR to add how to install via the package manager in the
README.md) - If you have any questions, feel free to create an issue and ask.
🗒 Related Article(s)
- fzf-make - A command runner with fuzzy finder and preview window for make, pnpm - reddit
- Show HN: fzf-make – a command runner with a fuzzy finder for make, pnpm and yarn - Hacker News
- (Japanese)[make,pnpm,yarnに対応]タスクランナーのコマンドをfuzzy finder形式で選択できるCLIツール fzf-makeの紹介
- (Japanese)Makefileに定義されたtargetをfzfで選択して実行するCLIツールをRustでつくった