How to use Path Module in NodeJS

Usually we have operations to handle file paths and filenames such as getting the path pointing to the directory, getting the file name in the path, getting the file’s extension, etc. NodeJS has provided us with the Path module to handle these operations.

I. What is Path module?

Path Module in Node.js is used to manipulate the path of files.

To include the path module, we use the require() method:

const path = require("path");

II. Path Properties and Methods

Here are some supported methods in the Path module.

1. Get the file name - path.basename(path[, ext])

We can use the path.basename() function to get the file name. It has two uses as follows:

console.log(path.basename("public/image/cat.png")); // cat.png
console.log(path.basename("public/image/cat.png", ".png")); // cat

Example: We check current file name

// Base file name
console.log(path.basename(__filename)); // hello.js

2. Get the folder path of the file - path.dirname(path)

path.dirname() helps get the path to the file’s folder.

Example:

console.log(path.dirname(__filename));
// Result(Current directory): /home/user/dir

console.log(path.dirname("/public/image/logo.png"));
// Result: /public/image

3. Get the file extension - path.extname(path)

Get the file extension value, but there are some special cases

console.log(path.extname(__filename)); // .js

console.log(path.extname("cat.html")); // .html

console.log(path.extname("cat.md")); // .md

console.log(path.extname("cat.")); // .

console.log(path.extname("cat")); // (blank)

console.log(path.extname(".cat")); // (blank)

4. Get Path String from an Object - path.format(object)

This function will return a path with an Object as value. This object has 5 elements including:

  • root
  • dir
  • base
  • ext
  • name

Case 1: If dir and base are provided, the result will be dir + base.

console.log(
  path.format({
    dir: "/home/user/dir",
    base: "path.js",
  })
);
// /home/user/dir/path.js

Case 2: root will be used if dir is not available

console.log(
  path.format({
    root: "/",
    base: "path.js",
  })
);
// /path.js

Case 3: name + ext is used if there is no base

console.log(
  path.format({
    dir: "/",
    name: "path",
    ext: ".js",
  })
);
// /path.js

Case 4: If dir and root are both used then they will be combined.

console.log(
  path.format({
    root: "/",
    dir: "/home/user/dir",
    base: "path.js",
    ext: ".js",
    name: "path",
  })
);
// /home/user/dir/path.js

Case 5: If only base is available, it will return base.

console.log(
  path.format({
    base: "path.js",
  })
);

// path.js

5. Convert path to an object - path.parse(path)

This function is opposite to the path.format function.

Example: Log current path object

// Create path object
console.log(path.parse(__filename));

/*
{
  root: '/',
  dir: '/home/user/dir',
  base: 'path.js',
  ext: '.js',
  name: 'path'
}
*/

6. Concatenate paths - path.join([path1][, path2][, …])

To concatenate paths, we use path.join().

console.log(path.join(__dirname, 'test', 'hello.html'));

// /home/user/dir/test/hello.html

7. Check absolute path - path.isAbsolute(path)

path.isAbsolute() checks if path is an absolute path or not.

console.log(path.isAbsolute("/foo/bar")); // true

console.log(path.isAbsolute("/baz/..")); // true

console.log(path.isAbsolute("hello/")); // false

console.log(path.isAbsolute(".")); // false

8. Seperate path - path.sep

We use path.sep to seperate path

console.log("foo/bar/baz".split(path.sep)); // [ 'foo', 'bar', 'baz' ]