CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-depcheck

Comprehensive dependency analysis tool for Node.js projects that identifies unused dependencies, missing dependencies, and provides detailed usage analysis.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

parsers.mddocs/

Parsers

Depcheck uses parsers to extract dependencies from different file types. Each parser analyzes specific file formats and returns the dependencies found in them.

Parser Interface

type Parser = (
  content: string,
  filePath: string, 
  deps: string[],
  rootDir: string
) => string[];

Parameters:

  • content: File content as string
  • filePath: Absolute path to the file being parsed
  • deps: Array of available dependencies to match against
  • rootDir: Project root directory path

Returns: Array of dependency names found in the file

Available Parsers

JavaScript Parsers

// ES6/ES2015+ JavaScript parser
depcheck.parser.es6: Parser;

// ES7+ JavaScript parser with advanced features
depcheck.parser.es7: Parser;

// React JSX parser
depcheck.parser.jsx: Parser;

TypeScript Parsers

// TypeScript parser (.ts, .tsx files)
depcheck.parser.typescript: Parser;

// TypeScript configuration parser (tsconfig.json)
depcheck.parser.tsconfig: Parser;

Alternative Language Parsers

// CoffeeScript parser (.coffee, .litcoffee, .coffee.md)
depcheck.parser.coffee: Parser;

// SASS/SCSS parser
depcheck.parser.sass: Parser;

// GraphQL parser
depcheck.parser.graphql: Parser;

Framework-Specific Parsers

// Vue.js component parser
depcheck.parser.vue: Parser;

// Svelte component parser  
depcheck.parser.svelte: Parser;

// Storybook configuration parser
depcheck.parser.storybook: Parser;

Default Parser Configuration

Depcheck uses this default parser mapping:

const defaultParsers = {
  '**/*.js': depcheck.parser.jsx,
  '**/*.mjs': depcheck.parser.jsx,
  '**/*.cjs': depcheck.parser.jsx,
  '**/*.jsx': depcheck.parser.jsx,
  '**/*.coffee': depcheck.parser.coffee,
  '**/*.litcoffee': depcheck.parser.coffee,
  '**/*.coffee.md': depcheck.parser.coffee,
  '**/*.graphql': depcheck.parser.graphql,
  '**/.storybook/main.js': depcheck.parser.storybook,
  '**/tsconfig*.json': depcheck.parser.tsconfig,
  '**/*.cts': depcheck.parser.typescript,
  '**/*.mts': depcheck.parser.typescript,
  '**/*.ts': depcheck.parser.typescript,
  '**/*.tsx': depcheck.parser.typescript,
  '**/*.sass': depcheck.parser.sass,
  '**/*.scss': depcheck.parser.sass,
  '**/*.vue': depcheck.parser.vue,
  '**/*.svelte': depcheck.parser.svelte
};

Custom Parser Configuration

You can customize parser configuration by providing a parsers object:

import depcheck from 'depcheck';

const options = {
  parsers: {
    // Use multiple parsers for JS files
    '**/*.js': [depcheck.parser.es6, depcheck.parser.jsx],
    
    // Use TypeScript parser for .mjs files
    '**/*.mjs': depcheck.parser.typescript,
    
    // Custom file pattern
    '**/custom/*.special': depcheck.parser.es7
  }
};

depcheck('/path/to/project', options).then(result => {
  // Results include dependencies found by custom parsers
});

Parser Usage Examples

Detecting Import Styles

Different parsers handle different import/require patterns:

ES6 Parser detects:

import foo from 'package-name';
import { bar } from 'package-name';
import * as baz from 'package-name';

JSX Parser additionally detects:

import React from 'react';
import Component from './Component';
// JSX usage: <Component />

TypeScript Parser additionally detects:

import type { TypeName } from 'package-name';
import { type TypeName, functionName } from 'package-name';

Framework-Specific Detection

Vue Parser detects:

<template>
  <div>{{ message }}</div>
</template>

<script>
import { ref } from 'vue';
export default {
  setup() {
    // Vue-specific dependency detection
  }
}
</script>

<style lang="scss">
@import 'some-sass-package';
</style>

Sass Parser detects:

@import 'node-sass-package';
@use 'sass-package' as sp;

Configuration File Parser Configuration

In configuration files (.depcheckrc), specify parsers as:

{
  "parsers": {
    "**/*.js": "jsx",
    "**/*.ts": "typescript", 
    "**/*.vue": ["vue", "es6"],
    "**/*.custom": "es7"
  }
}

Note: Parser names in configuration correspond to the keys in depcheck.parser object.

Install with Tessl CLI

npx tessl i tessl/npm-depcheck

docs

cli.md

index.md

parsers.md

specials.md

tile.json