✨ Features
🎯 Phase 2 - Production Ready
Linker has reached Phase 2 with enterprise-grade features for professional development workflows.
🔄 Smart Import Updates
- Automatically detect and update imports when files or folders are renamed
- Works across your entire workspace instantly
- Preserves your code formatting style (quotes, semicolons, indentation)
📊 Visual Diff Preview
- See all import changes before applying them
- Side-by-side or inline diff view with syntax highlighting
- One-click apply or cancel with full control
⏮️ Complete Undo/Redo System
- Full history tracking for all import changes
- Keyboard shortcuts:
Ctrl+Alt+Z (undo) / Ctrl+Alt+Y (redo)
- History preserved across VS Code sessions
- Configurable history limit (default: 50 entries)
🌐 Multi-Language Support
- JavaScript/TypeScript — ES6 imports, CommonJS require, dynamic imports
- Python —
import and from...import statements with dot notation
- Java — Package imports and static imports
- Go — Single and block import statements
- CSS/SCSS/LESS —
@import and @import url() statements
🎨 Advanced Path Resolution
- TypeScript path aliases (
@/, ~/, custom paths)
- Relative imports (
./, ../)
- Absolute imports
- Nested folder structures
- File caching to avoid redundant reads
- Batch processing for large codebases
- Smart debouncing for rapid renames
- Handles projects with 1000+ files efficiently
🔧 Git Integration
- Automatic
git mv for tracked files
- Optional auto-staging of modified files
- Works seamlessly with your Git workflow
📦 Installation
Method 1: VS Code Marketplace (Recommended)
- Open Visual Studio Code
- Press
Ctrl+Shift+X (Windows/Linux) or Cmd+Shift+X (Mac)
- Search for "Linker" or "Import Linker"
- Click Install
Method 2: Command Line
code --install-extension linkerdev.import-linker
Method 3: Manual Installation
- Download the
.vsix file from Releases
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X)
- Click
... menu → Install from VSIX...
- Select the downloaded file
🚀 Quick Start
Basic Usage (3 Steps)
Rename a file or folder in VS Code Explorer
- Right-click → Rename or press
F2
Review the preview showing which imports will be updated
- Visual diff shows before/after comparison
- See exactly which files will be modified
Click "Apply" to update all imports
- All imports updated instantly across your workspace
- Or click "Cancel" to abort
That's it! ✅ No configuration needed to get started.
Your First Rename
Try this simple example:
Create two files:
// utils.ts
export const hello = () => "Hello!";
// app.ts
import { hello } from './utils';
Rename utils.ts → helpers.ts
Watch Linker automatically update app.ts:
import { hello } from './helpers'; // ✅ Updated!
🌐 Supported Languages
JavaScript / TypeScript
// ES6 imports
import { Component } from './Component';
import * as utils from '@/utils';
// CommonJS
const helper = require('../helper');
// Dynamic imports
const module = await import('./module');
Python
# Absolute imports
from utils.helpers import format_date
import utils.helpers
# Relative imports
from .helpers import format_date
from ..utils import helpers
Java
// Package imports
import com.example.utils.Helper;
// Static imports
import static com.example.utils.Helper.doSomething;
Go
// Single imports
import "project/utils"
// Block imports
import (
"fmt"
"project/utils"
"project/helpers"
)
CSS / SCSS / LESS
/* CSS imports */
@import "partials/variables.css";
@import url("partials/mixins.css");
/* SCSS imports */
@import 'base/reset';
⚙️ Configuration
Linker works out-of-the-box with smart defaults. Customize via VS Code Settings (Ctrl+,).
Essential Settings
{
// File scanning
"linker.fileExtensions": ["js", "ts", "py", "java", "go", "css"],
"linker.exclude": ["**/node_modules/**", "**/.git/**"],
// Preview options
"linker.preview.diffView": true,
"linker.preview.layout": "side-by-side",
// Formatting preferences
"linker.formatting.quoteStyle": "auto",
"linker.formatting.semicolons": "auto",
// History management
"linker.history.enabled": true,
"linker.history.maxEntries": 50,
// Language toggles
"linker.multiLanguage.python": true,
"linker.multiLanguage.java": true,
"linker.multiLanguage.go": true,
"linker.multiLanguage.css": true,
// Git integration
"linker.autoStageChanges": false
}
Quick Settings Guide
| Setting |
Description |
Default |
fileExtensions |
File types to scan |
All supported |
exclude |
Patterns to ignore |
node_modules, .git |
preview.diffView |
Show visual preview |
true |
preview.layout |
Diff layout style |
side-by-side |
formatting.quoteStyle |
Quote preference |
auto |
formatting.semicolons |
Semicolon usage |
auto |
history.enabled |
Enable undo/redo |
true |
history.maxEntries |
History limit |
50 |
autoStageChanges |
Auto-stage in Git |
false |
See USER_GUIDE.md for detailed configuration options.
📚 Documentation
💡 Examples
Example 1: Simple File Rename
Scenario: Rename utils.ts → helpers.ts
// Before
// src/utils.ts
export const formatDate = () => { /* ... */ };
// src/app.ts
import { formatDate } from './utils';
After (Linker auto-updates):
// src/app.ts
import { formatDate } from './helpers'; // ✅ Updated!
Example 2: Folder Rename
Scenario: Rename services/ → api/
// Before
import { fetchUsers } from '../services/userService';
// After (Linker auto-updates)
import { fetchUsers } from '../api/userService'; // ✅ Updated!
Example 3: Python Imports
Scenario: Rename helpers.py → utilities.py
# Before
from utils.helpers import format_date
# After (Linker auto-updates)
from utils.utilities import format_date # ✅ Updated!
Example 4: Java Package Imports
Scenario: Rename Helper.java → Utility.java
// Before
import com.example.utils.Helper;
import static com.example.utils.Helper.doSomething;
// After (Linker auto-updates)
import com.example.utils.Utility; // ✅ Updated!
import static com.example.utils.Utility.doSomething; // ✅ Updated!
Example 5: CSS Imports
Scenario: Rename variables.css → vars.css
/* Before */
@import "partials/variables.css";
/* After (Linker auto-updates) */
@import "partials/vars.css"; /* ✅ Updated! */
⌨️ Keyboard Shortcuts
| Action |
Windows/Linux |
Mac |
| Undo last import changes |
Ctrl+Alt+Z |
Cmd+Alt+Z |
| Redo import changes |
Ctrl+Alt+Y |
Cmd+Alt+Y |
| Show import history |
Ctrl+Shift+P → "Linker: Show History" |
Same |
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
📝 License
MIT License - see LICENSE file for details.
🆘 Support
🌟 Show Your Support
If Linker saves you time, please:
📊 Project Status
Current Version: 1.1.0 (Phase 2)
Status: Production Ready ✅
Languages: 5 (JavaScript/TypeScript, Python, Java, Go, CSS)
Active Development: Yes
Last Updated: November 2025
Benefits:
- ✅ Preserves git file history
- ✅ Auto-stages modified files
- ✅ Works seamlessly with git workflows
- ✅ Better handling of merge conflicts
Exclude Patterns
Skip unnecessary directories to improve performance:
{
"linker.exclude": [
"**/node_modules/**",
"**/.git/**",
"**/dist/**",
"**/build/**",
"**/.next/**",
"**/coverage/**",
"**/__tests__/**",
"**/*.test.{js,ts,jsx,tsx}",
"**/*.spec.{js,ts,jsx,tsx}"
]
}
🐛 Troubleshooting
Imports not updating after rename
Possible causes:
- File extension not included in
linker.fileExtensions
- File excluded by
linker.exclude patterns
- Unsupported import syntax
Solutions:
- Check your configuration settings
- Verify file extension is in the list
- Reload VS Code window:
Ctrl+Shift+P → "Reload Window"
Performance issues with large projects
Solutions:
- Increase debounce delay:
{ "linker.performance.debounceDelay": 1000 }
- Reduce batch size:
{ "linker.performance.batchSize": 25 }
- Add more exclusion patterns
- Disable progress reporting for very large projects
Git auto-stage not working
Checklist:
- ✅ Ensure
linker.git.enabled is true
- ✅ Ensure
linker.git.autoStage is true
- ✅ Verify file is tracked by Git (not untracked/new)
- ✅ Check Git is initialized in your project
TypeScript aliases not resolving
Requirements:
- ✅
tsconfig.json exists in project root
- ✅
baseUrl is properly configured
- ✅
paths are properly defined
- ✅ Alias pattern matches your tsconfig
Try: Reload VS Code window after updating tsconfig.json
📚 Documentation
🤝 Contributing
Contributions are welcome! Here's how you can help:
- Report bugs — Open an issue
- Request features — Share your ideas
- Submit PRs — Fix bugs or add features
- Improve docs — Help make documentation better
Development Setup
# Clone the repository
git clone https://github.com/soumen0818/Linker.git
cd Linker
# Install dependencies
npm install
# Build the extension
npm run build
# Run in development mode
# Press F5 in VS Code to open Extension Development Host
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🌟 Support This Project
If you find Linker useful, please consider:
- ⭐ Star this repository on GitHub
- 📢 Share it with your team and friends
- 💬 Leave a review on the VS Code Marketplace
- 🐛 Report bugs to help improve the extension
- 💡 Request features you'd like to see
🔗 Links
Made with ❤️ for the developer community
Version 1.0.0 | ⬆ Back to Top