
Node.js tool for parsing imports to change ESM and CJS specifiers.
- Rewrite specifier values.
- Read metadata about a specifier's AST node.
- Updates files or strings.
- Parses
import
, import()
, import.meta.resolve()
, export
, require
, and require.resolve()
.
Example
Given a file with some imports and exports:
import { someLib } from 'some-package'
import { foo } from './path/to/foo.js'
export { bar } from './path/to/bar.js'
You can use specifier
to change the values:
import { specifier } from '@knighted/specifier'
const update = await specifier.update('file.ts', ({ value }) => {
if (value === 'some-package') {
return 'some-package/esm'
}
return value.replace('.js', '.mjs')
})
console.log(update)
Or collect the AST nodes:
import { type Spec, specifier } from '@knighted/specifier'
const nodes: { node: Spec['node']; parent: Spec['parent'] }[] = []
await specifier.update('file.ts', ({ node, parent }) => {
nodes.push({ node, parent })
})
nodes.forEach(({ node, parent }) => {
})