2.0.6 • Published 6 months ago

@knighted/specifier v2.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

@knighted/specifier

CI codecov NPM version

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:

// file.ts

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)

/*
import { someLib } from 'some-package/esm'
import { foo } from './path/to/foo.mjs'

export { bar } from './path/to/bar.mjs'
*/

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 }) => {
  // Do something with the metadata
})
2.0.0-rc.2

8 months ago

2.0.0-rc.3

7 months ago

2.0.0-rc.4

7 months ago

2.0.3

7 months ago

2.0.2

7 months ago

2.0.5

6 months ago

2.0.4

7 months ago

2.0.6

6 months ago

2.0.1

7 months ago

2.0.0

7 months ago

2.0.0-rc.0

1 year ago

2.0.0-rc.1

1 year ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.0-rc.4

2 years ago

1.0.0-rc.3

2 years ago

1.0.0-rc.2

2 years ago

1.0.0-rc.1

2 years ago

1.0.0-rc.0

2 years ago

1.0.0-alpha.7

2 years ago

1.0.0-alpha.6

2 years ago

1.0.0-alpha.5

2 years ago

1.0.0-alpha.4

2 years ago

1.0.0-alpha.3

2 years ago

1.0.0-alpha.2

2 years ago

1.0.0-alpha.1

2 years ago

1.0.0-alpha.0

2 years ago