rollup打包ts为小程序的sdk

29 min read
import babel from "@rollup/plugin-babel"
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import builtins from 'rollup-plugin-node-builtins';
import typescript from "@rollup/plugin-typescript";
import globals from 'rollup-plugin-node-globals';
export default {
  input: 'src/main.ts',//入口文件
  output: {
    file: 'dist/bundle.js',//打包后的存放文件
    format: 'cjs',//输出格式 amd es6 iife umd cjs
    name: 'test',//如果iife,umd需要指定一个全局变量
    // sourcemap: true,//是否生成sourcemap
   
    // external: ['lodash']//外部依赖,不会被打包
  },

  plugins: [
    typescript(), // 编译typescript
    commonjs(),
    globals(),
    builtins(),
    resolve(), // 允许我们加载第三方模块
    babel({
      exclude: 'node_modules/**', // 只编译我们的源代码
      babelHelpers: 'bundled',
      presets: [
        [
          "@babel/env",
          {
            "modules": false // 设置为false,否则babel会在rollup有机会执行其操作之前导致我们的模块转化为commonjs
          }
        ]
      ]
    })
  ],//插件
  // external: ['lodash']//外部依赖,不会被打包
}

入口文件 main.ts

import * as events from "events"

export class Foo extends events.EventEmitter{
    
}

测试内容

const bundle = require("./bundle");
const b = new bundle.Foo()
b.on("test",()=>{console.log(1);})
b.emit("test")