Home

Awesome

importify — manage Haskell imports quickly

Build Status Hackage Stackage Nightly Stackage LTS HLint Status License: MIT

Importify in a nutshell.

importify tool helps you to manage the import section of your Haskell project modules. GHC compiler can warn you about unused imports, and it's a good practice to remove such imports immediately. But this becomes tedious, especially if you use explicit import lists.

Importify can remove unused imports automatically.

Before importifyAfter importify
Module with imports messAfter removing all unused imports

You can use stylish-haskell after importify to prettify imports.

In the future, we plan for Importify to be able to:

Installation

Installation process assumes that you have already installed and configured stack build tool. Currently importify works only with projects built with stack.

Installing from Stackage

Install just as every usual package.

stack install importify

Installing from source

Perform the next steps before driving:

git clone https://github.com/serokell/importify.git  # 1. Clone repository locally
cd importify                                         # 2. Step into folder
stack install importify\:exe\:importify              # 3. Copy executable under ~/.local/bin

Usage

In short:

$ cd my-project-which-build-with-stack
$ importify cache
$ importify file path/to/File/With/Unused/Imports.hs

importify has several commands. Most important is

importify --help

Before removing redundant imports run importify cache command. Importify stores local cache for the project under the .importify folder inside your project. This cache stores exported entities for each module for every dependency and for all your local packages. Make sure to re-run importify cache if you change the list of exported functions and types in your project modules. Cache is built incrementally; it builds dependencies only once. But if you add dependencies or use other versions of them (for instance, because of bumping stack lts) you need to run importify cache again. You can always perform rm -rf .importify before caching if you face any troubles.

After the cache is built, you can use importify file PATH_TO_FILE command from your project root directory. This command runs Importify on the file and prints the result in the terminal. If you want to change a file in-place use the following command:

importify file -i PATH_TO_FILE