


import { transform } from 'typescript';
import * as ts from 'typescript';
const pluginName = 'rollup-plugin-es6-module-transform';
function getInputTSModule(input: string): ts.ModuleDeclaration {
return ts.parseModule(input, {
type: 'module',
exports: {},
});
}
function getOutputTSModule(inputTSModule: ts.ModuleDeclaration): ts.ModuleDeclaration {
return ts.createModuleDeclaration(
inputTSModule.name.name,
inputTSModule.body,
{
type: 'module',
exports: inputTSModule.exports,
},
);
}
function transformES6Module(input: string, inputTSModule: ts.ModuleDeclaration, outputTSModule: ts.ModuleDeclaration): string {
const inputFileName = inputTSModule.name.name + '.js';
const outputFileName = outputTSModule.name.name + '.js';
return ts.transform(input, {
outDir: 'build',
module: 'ES6',
sourcemap: true,
typescript: getInputTSModule,
rename: (_, name) => name,
sourcemapName: outputFileName,
})
.then((result) => result.code)
.then((code) => {
return code.replace(/\$\{[a-z]+}/g, (match) => {
const variableName = match.replace(/\[.+?\]/g, '');
return `$${variableName}`;
});
})
.then(() => outputFileName);
}
const plugin = {
name: pluginName,
transform,
};
export default plugin;
968

被折叠的 条评论
为什么被折叠?



