import
statement regex.
This package contains regular expressions for matching dynamic and static import
statements.
Use this package when you need to match dynamic or static import
statements.
Note:
- Statements in docblock (
/** */
), multiline (/* */
), and single-line (//
) comments are ignored - Expressions are ECMAScript-compatible. They have not been tested with other flavors (PCRE, PCRE2, etc)
This package is ESM only.
yarn add @flex-development/import-regex
From Git:
yarn add @flex-development/import-regex@flex-development/import-regex
See Git - Protocols | Yarn for details on requesting a specific branch, commit, or tag.
Suppose we have the following module:
import * as regexp from '@flex-development/import-regex'
import { omit } from '@flex-development/tutils'
import { dedent } from 'ts-dedent'
const code: string = dedent`
import { defineBuildConfig, type Config } from '@flex-development/mkbuild'
import type {
Join,
Nullable,
Opaque,
Simplify
} from '@flex-development/tutils'
import * as color from 'colorette'
import consola from 'consola'
import tsconfig from './tsconfig.json' assert { type: 'json' }
const { readPackage } = await import('read-pkg')
const se2 = 'side-effect-2.mjs'
await import('./side-effect.mjs')
await import(se2)
`
const print = (matches: IterableIterator<RegExpMatchArray>): void => {
console.debug([...matches].map(match => omit(match, ['input'])))
}
print(code.matchAll(regexp.STATIC_IMPORT_REGEX))
print(code.matchAll(regexp.DYNAMIC_IMPORT_REGEX))
...running that yields:
[
{
'0': "import { defineBuildConfig, type Config } from '@flex-development/mkbuild'",
'1': undefined,
'2': '{ defineBuildConfig, type Config }',
'3': '@flex-development/mkbuild',
'4': undefined,
index: 0,
groups: [Object: null prototype] {
type: undefined,
imports: '{ defineBuildConfig, type Config }',
specifier: '@flex-development/mkbuild',
assertion: undefined
}
},
{
'0': 'import type {\n' +
' Join,\n' +
' Nullable,\n' +
' Opaque,\n' +
' Simplify\n' +
"} from '@flex-development/tutils'",
'1': 'type',
'2': '{\n Join,\n Nullable,\n Opaque,\n Simplify\n}',
'3': '@flex-development/tutils',
'4': undefined,
index: 75,
groups: [Object: null prototype] {
type: 'type',
imports: '{\n Join,\n Nullable,\n Opaque,\n Simplify\n}',
specifier: '@flex-development/tutils',
assertion: undefined
}
},
{
'0': "import * as color from 'colorette'",
'1': undefined,
'2': '* as color',
'3': 'colorette',
'4': undefined,
index: 164,
groups: [Object: null prototype] {
type: undefined,
imports: '* as color',
specifier: 'colorette',
assertion: undefined
}
},
{
'0': "import consola from 'consola'",
'1': undefined,
'2': 'consola',
'3': 'consola',
'4': undefined,
index: 199,
groups: [Object: null prototype] {
type: undefined,
imports: 'consola',
specifier: 'consola',
assertion: undefined
}
},
{
'0': "import tsconfig from './tsconfig.json' assert { type: 'json' }",
'1': undefined,
'2': 'tsconfig',
'3': './tsconfig.json',
'4': "{ type: 'json' }",
index: 229,
groups: [Object: null prototype] {
type: undefined,
imports: 'tsconfig',
specifier: './tsconfig.json',
assertion: "{ type: 'json' }"
}
}
]
[
{
'0': "const { readPackage } = await import('read-pkg')",
'1': '{ readPackage }',
'2': "import('read-pkg')",
'3': "'read-pkg'",
'4': undefined,
index: 293,
groups: [Object: null prototype] {
imports: '{ readPackage }',
expression: "import('read-pkg')",
specifier: "'read-pkg'",
options: undefined
}
},
{
'0': "await import('./side-effect.mjs')",
'1': undefined,
'2': "import('./side-effect.mjs')",
'3': "'./side-effect.mjs'",
'4': undefined,
index: 376,
groups: [Object: null prototype] {
imports: undefined,
expression: "import('./side-effect.mjs')",
specifier: "'./side-effect.mjs'",
options: undefined
}
},
{
'0': 'await import(se2)',
'1': undefined,
'2': 'import(se2)',
'3': 'se2',
'4': undefined,
index: 410,
groups: [Object: null prototype] {
imports: undefined,
expression: 'import(se2)',
specifier: 'se2',
options: undefined
}
}
]
This package exports the identifiers DYNAMIC_IMPORT_REGEX
and STATIC_IMPORT_REGEX
.
There is no default export.
- Source:
src/import-dynamic.ts
Dynamic import
statement regex. Ignores matches in comments.
Requires unicode support (flag u
).
- Source:
src/import-static.ts
Static import
statement regex. Ignores matches in comments.
This package is fully typed with TypeScript.
export-regex
—export
statement regex
See CONTRIBUTING.md
.