⚡ A Rollup plugin to process TypeScript code inside <script lang="ts"> tags.
Supports compilation using one of four engines: oxc, swc, esbuild, or typescript.
Only transpile, without type checking and diagnostics.
This plugin requires Node.js v14.16.1+ (LTS recommended).
npm install rollup-plugin-inline-ts --save-devnpm install oxc-transform --save-devnpm install @swc/core --save-devnpm install esbuild --save-devnpm install typescript --save-devCreate a rollup.config.js configuration file and import the
plugin:
import inlineTs from 'rollup-plugin-inline-ts';
export default {
// ...
plugins: [
// ...
inlineTs(),
],
};Example with all available options:
import inlineTs from 'rollup-plugin-inline-ts';
export default {
// ...
plugins: [
// ...
inlineTs({
extensions: ['.html', '.xht'], // Files to process
engine: 'swc', // Transpiler engine
options: { jsc: { parser: { syntax: 'typescript' } } }, // Engine specific options
tsScriptAttr: 'lang="ts"', // Match attribute
jsScriptAttr: '', // Replacement attribute
logPrefix: '[inline-ts]', // Log prefix
debug: false, // Debug logging
}),
],
};Type: Array<string>
Default: ['.html']
File extensions for <script lang="ts"> blocks processing.
Type: 'oxc' | 'swc' | 'esbuild' | 'typescript'
Default: 'oxc'
Transpilation engine to use.
Type: object (depends on specified engine)
Default: engine-specific
Passed directly to the underlying transpiler.
| Engine | Type | Package | Default |
|---|---|---|---|
oxc |
TransformOptions |
oxc-transform |
{} |
swc |
Config |
@swc/core |
{ jsc: { parser: { syntax: 'typescript' } } } |
esbuild |
TransformOptions |
esbuild |
{ loader: 'ts' } |
typescript |
CompilerOptions |
typescript |
{ target: ts.ScriptTarget.ESNext } |
Type: string
Default: 'lang="ts"'
Attribute used to detect TypeScript <script> tags.
Type: string
Default: ''
Attribute to replace tsScriptAttr with after transpilation.
Type: boolean
Default: true
If set to true, the plugin will preserve import statements for files with extensions listed in the extensions option.
These imports will not be removed as unused during the transformation.
Type: string
Default: '[inline-ts]'
Prefix for plugin logs.
Type: boolean
Default: false
Enable debug logging.
- Scans input files with configured extensions (e.g.,
.html). - Detects
<script lang="ts">blocks. - Transpiles TypeScript code using the specified engine.
- Replaces the script content and removes or updates the tag’s
langattribute. - Preserves imports with extensions from
extensionsoption to avoid them being removed as unused.