Node.js — Check if a Path is a SymLink (Symbolic Link)

You’re probably using Node.js’ integrated fs core module to interact with the local hard disk. The fs module provides lots of useful low-level methods to interact with files and directories of any kind.

This tutorial shows you how to detect whether a given path on the file system points to a symbolic link. We’re creating a handy isSymlink(path) helper method which you could use in your project.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer
  36. Prevent Line Breaks in String Template Literals
  37. How to Implement a Custom `toString` Method (Coming soon)
  38. What Is `Symbol.toStringTag` and How to Use It (Coming soon)

Node.js’ built-in fs core module comes with all the needed functionality to detect whether a given file path resolves to a symbolic link. First, you need to retrieve the Stats instance of the path. From there, you can use the stats.isSymbolicLink() method to detect the actual file type.

Here’s a utility method you could use in your project to detect a symlink:

import { stat } from 'node:fs/promises'

/**
 * Determine whether the given `path` points to a symbolic link.
 *
 * @param {String} path
 *
 * @returns {Boolean}
 */
async function isSymlink(path) {  
  const stats = await Fs.stat(path)

  return stats.isSymbolicLink()
}

await isSymbolicLink('/etc/nginx/sites-enabled/futurestud.io.conf')  
// true

await isSymbolicLink('./node_modules')  
// false

You might be interested in related tutorials here on Future Studio related to path’s and their resolving file types:
- detect whether a path is a file - detect whether a path is a directory

Use the @supercharge/fs Package

I’m the maintainer of the @supercharge/fs package providing convenient file system utilities. This package comes with a handy isSymLink(path) method determining whether the given path points to a symbolic link on your local hard disk:

import Fs from '@supercharge/fs'

await Fs.isSymLink('/etc/nginx/sites-enabled/futurestud.io.conf')  
// true

await Fs.isSymLink('./node_modules')  
// false

Enjoy!


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.