编译导出以供导入和窗口使用

时间:2019-05-20 17:18:23

标签: typescript tsconfig

如何用打字稿创建文件,该文件既可以从另一个模块导入,也可以与#include <iostream> #include <string> using namespace std; int main() { int t,k=0; cin>>t; while(k<t) { int n,q,i,j,cnt=0,temp; cin>>n>>q; string arr; cin>>arr; for(i=0; i<q; i++) { int l, r, xoring=0; cin>>l>>r; temp=0; for(j=l-1; j<r; j++) { xoring^=(arr[j]-'A'+1); if(xoring==0) { temp++; } } if(temp==(r-l+1)/2) { cnt++; } } cout<<"Case #"<<k+1<<": "<<cnt<<endl; k++; } return 0; } 一起使用。例如:

index.ts

<script src=""/>

tsconfig.json

export class A {

   echo() {
     console.log('a');
   }
}

如何生成这样的输出:

{
  "compilerOptions": {
    "lib": ["es2017", "dom"],
    "target": "es5",
    "module": "commonjs",
  },
}

我还希望我的编译器使用以下命令生成class A { echo() { console.log('a'); } } if (typeof exports !== 'undefined) { Object.defineProperty(exports, "__esModule", { value: true }); exports.A = A; // don't expose to global scope if module is imported via webpack or etc } else if (typeof window !== 'undefined') { window.A = A }

index.d.ts

我尝试了什么:

  • 我无法在export declare class A { echo() } 文件的if内部使用导出文件
  • 我无法定义变量导出,而不能使用自定义。
  • 我在.ts中尝试了不同的module

我还认为我可以创建2 tsconfig并运行tsc 2次。但是当我的tsconfig.json包含index.ts时,如果没有某种导出方法就无法生成js文件。例如。使用export仍会生成

"module"="none"

我明白了

 Object.defineProperty(exports, "__esModule", { value: true });` 

我看到atm的唯一方法是添加webpack并创建一个具有import语句和exports is not defined 分配的单独文件main.js。但是与库大小相比,它有很多开销代码。

1 个答案:

答案 0 :(得分:1)

您可以在iife模式下尝试rollup

$ npm i rollup typescript rollup-plugin-typescript rollup-plugin-uglify
$ ./node_modules/.bin/rollup -c rollup.config.js

rollup.config.js

import typescript from 'rollup-plugin-typescript';
import { uglify } from "rollup-plugin-uglify";

export default {
    input: './index.ts',
    output: {file: './browser.js', format: 'iife', name: 'myBundle'},
    plugins: [
        typescript(),
        uglify()
    ]
}

index.ts

// index.ts
export class A {
  echo() {
    console.log("a");
  }
}

输出 browser.js

var myBundle=function(o){"use strict";var n=(t.prototype.echo=function(){console.log("a")},t);function t(){}return o.A=n,o}({});