Node.js loader for import specifiers as file paths without extensions or as directory paths
Install:
npm i extensionless
Start node
with the following flag added:
--experimental-loader=extensionless
You can now use import specifiers as file paths without extensions or as directory paths:
import mod from './mod'
import mod from '../mod' assert {type: 'json'}
import api from '/apps/api'
import web from 'file:///apps/web'
To configure the module, add the field extensionless
to your project's package.json
:
"extensionless": {
"lookFor": ["js", "mjs", "cjs"]
}
Field | Default Value |
---|
lookFor | ["js"] |
When it can be deduced from the specifier that its target is a directory, the resolver looks for only the index files:
import cur from '.'
import up from '..'
import mod from './mod/'
import mod from '../mod/' assert {type: 'json'}
import api from '/apps/api/'
import web from 'file:///apps/web/'
This loader also adds support for Windows path resolution with which you can use forward or backward slashes as separators.
import mod from '.\\mod'
import mod from '..\\mod\\' assert {type: 'json'}
import api from 'C:/apps/api'
import web from 'C:\\apps\\web\\'