开发一个rollup插件

 

 

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;  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值