Files
echoes/client/node_modules/@emnapi/core/rollup.config.js

61 lines
2.0 KiB
JavaScript

import { defineConfig } from '@emnapi/shared'
import pkg from './package.json' with { type: 'json' }
import { join, dirname } from 'path'
import fs from 'fs'
const plugins = [
['v8', 'v8', 'emnapiCorePluginsV8'],
['asyncWork', 'async-work', 'emnapiCorePluginsAsyncWork'],
['tsfn', 'threadsafe-function', 'emnapiCorePluginsThreadSafeFunction']
]
export default [
...defineConfig({
outputName: 'emnapiCore',
outputFile: 'emnapi-core',
defines: {
__VERSION__: JSON.stringify(pkg.version)
},
external: ['@emnapi/wasi-threads'],
plugins: [
{
name: 'rollup-plugin-create-plugin-entry',
writeBundle (outputOptions) {
const distDir = dirname(outputOptions.file)
fs.mkdirSync(join(distDir, 'plugins'), { recursive: true })
const entryFile = join(distDir, 'plugins', 'index.js')
const dtsEntryFile = join(distDir, 'plugins', 'index.d.ts')
let content = ''
for (const [name, file] of plugins) {
content += `export { default as ${name} } from './${file}.js'\n`
}
let dtsContent = "export { PluginFactory, PluginContext, EmnapiPlugin } from '../emnapi-core'\n"
for (const [name, file] of plugins) {
dtsContent += `export { default as ${name} } from './${file}'\n`
}
fs.writeFileSync(entryFile, content, 'utf8')
fs.writeFileSync(dtsEntryFile, dtsContent, 'utf8')
}
}
]
}),
...defineConfig({
outputFile: 'emnapi-core.full',
defines: {
__VERSION__: JSON.stringify(pkg.version)
},
}),
...plugins.flatMap(([_, name, outputName]) => defineConfig({
outputName,
outputFile: `plugins/${name}`,
dtsEntry: `dist/types/emnapi/${name}.d.ts`,
staticDtsContent: (code) => code.replace(/\.\/index/g, '../emnapi-core'),
input: join(import.meta.dirname, `src/emnapi/${name}.js`),
compilerOptions: {
declaration: false,
declarationMap: false,
declarationDir: undefined
}
}))
]