Vue Module Dependency Detective

2.3.0 · active · verified Sun Apr 19

detective-vue2 is a utility library designed to extract module dependencies from Vue Single File Components (SFCs). It parses Vue files, including `<template>`, `<script>`, and `<style>` blocks, to identify `import` and `require` statements, as well as dependencies referenced in template expressions or style imports. The current stable version is 2.3.0, with releases occurring periodically to update underlying dependency parsers (like `detective-typescript`) and add support for new Vue syntax features, such as `script setup` and mixed `script/script setup` blocks. It distinguishes itself by specifically targeting Vue SFCs, providing a comprehensive solution for analyzing the dependency graph of Vue applications, supporting both Vue 2 and Vue 3 constructs. It is crucial for build tools, bundlers, and static analysis.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to use `detective-vue2` to extract module dependencies from a Vue Single File Component's content, covering script, template, and style imports.

const fs = require('fs');
const detective = require('detective-vue2');

// Example Vue SFC content with various dependencies
const vueFileContent = `
<template>
  <div>
    <MyComponent :prop="variableFromScript"></MyComponent>
    <router-link to="/foo">Go to Foo</router-link>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import MyComponent from './components/MyComponent.vue';
import { someUtility } from '@/utils/helpers';

const variableFromScript = ref('hello');
console.log(someUtility());
</script>

<style lang="scss">
@import './styles/base.scss';
.container {
  color: #333;
}
</style>
`;

try {
  const dependencies = detective(vueFileContent);
  console.log('Detected dependencies:', dependencies);
  // Expected output will include: 'vue', './components/MyComponent.vue', '@/utils/helpers', './styles/base.scss'
} catch (error) {
  console.error('Error detecting dependencies:', error);
}

// To run:
// 1. Create a project: `mkdir my-app && cd my-app && npm init -y`
// 2. Install dependencies: `npm install detective-vue2 typescript`
// 3. Save this code as `quickstart.js`
// 4. Execute: `node quickstart.js`

view raw JSON →