0.3.1 • Published 1 year ago

import-holmes v0.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

import-holmes

Import Holmes is a tool to inspect Javascript/Typescript projects imports

Warning this tool isn't in a stable version, check issues page to check futures features and current problems

Getting Started

Installing

# recommended
npx import-holmes
# or
pnpm add -g import-holmes
# or
yarn global add import-holmes
# or
npm add --location=global import-holmes

Warning if your intention is to use the core functions in your project consider not using global install

Cli

import-holmes
# or
import-holmes inspect
OptionsDefaultMeaning
-m, --moduleall dependencies and devDependenciesFilter inspection by module's name
-s, --specifierundefinedFilter inspection by specifier name
-g, --glob**/*.{ts,tsx}Glob to select files to inspect

Config File

For better configuring you can also set a config file named .holmesrc.json following this pattern:

// .holmesrc.json
{
  "$schema": "https://raw.githubusercontent.com/pmqueiroz/import-holmes/main/schema.json",
  "module": "some-module", // you can pass string[] as well
  "specifier": ["first", "second"], // you can pass a sting
  "glob": "**/*.{ts,tsx}",
  "globIgnore": ["node_modules/**", "**/*.{spec,test}.{ts,tsx}", "**/*.d.ts"],
  "parseConfig": { // refer to https://swc.rs/docs/usage/core#parse
    "syntax": "typescript",
    "tsx": true
  }
}

Core

This package also provides the core function under the cli.

inspectModule

inspects a typescript/javascript module searching for import declarations and returns results from imports

import { inspectModule } from 'import-holmes'

const someCode = `\
import A from 'b'
import { c } from 'd'
import { e as f } from 'g'

new A()

c()

const h = f
`

const inspect = inspectModule(someCode)

// outputs
[
  { specifier: 'A', moduleName: 'b', referenced: 1 },
  { specifier: 'c', moduleName: 'd', referenced: 1 },
  { specifier: 'e', moduleName: 'g', referenced: 1 }
]

There are some available options in inspect module

inspectModule('source code', {
   filename?: string
   modulesFilter?: string | string[]
   specifiersFilter?: string | string[]
   parseConfig?: ParserConfig // refer to https://swc.rs/docs/usage/core#parse
})

known Issues

Referenced column may not work well with some typings, such as type referenced in union type

Made with :heart: by Peam