How to get a file extension in Node.js

When working inside a node environment, working with file paths and directories is a common occurrence. As such, the desire to get as much detail about the file types is very important.

So, how can you get a file extension in Node.js? This is easily achieved by using Node.js’s native path library.

It allows us to use the method .extName() which returns the extension of the path, after the last occurrence of the . character.

This is very handy, as it allows us to do the following in our Node.js files:

var path = require('path')

console.log(path.extname('index.html'))
// '.html'

Be aware that this method doesn’t account for two occurrences of . in an extension name. So if we have a file name like filename.css.gz we can get the extension by using the following:

const filename = 'filename.css.gz'
const ext = filename.substring(filename.indexOf('.')+1); 
//ext = 'with.long.extension

Additionally,  if we want to get the file extension of a URL path with a query parameter. This is also straightforward using Node’s  native URL package:

const Url = require('url');
const Path = require('path');
const url = 'http://test-image.jpg?querystring=test';
const result = Path.extname(Url.parse(url).pathname); // '.jpg'

I hope this helped. 

Gareth Dunne

Senior JavaScript Engineer and creator of JSdiaries. Passionate about the latest in web technologies and how it can provide value for my clients.