当前位置: 首页 > 知识库问答 >
问题:

使用汇总生成typescript定义文件

宗政才俊
2023-03-14

我正在尝试rollup js来构建我的typescript项目,但我不知道如何生成定义文件,以及如何将它们自动包含在dist文件中。

有人知道怎么做吗?

这是我的汇总表。配置。js

import typescript from "rollup-plugin-typescript";
import handlebars from "rollup-plugin-handlebars";
import babel from 'rollup-plugin-babel';

export default {
  entry: 'src/generator.ts',
  format: 'cjs',
  plugins: [
    typescript(),
    handlebars(),
    babel()
  ],
  dest: 'dist/bundle.js'
};

我使用的是默认的ts配置,但对于declaration=true也是如此。

编辑:

还尝试使用Webpack:

    module.exports = {
      context: __dirname + '/src',
      entry: {
        index: './generator'
      },
      output: {
        path: __dirname + '/build',
        publicPath: '/',
        filename: 'generator.js'
      },
      resolve: {
        root: __dirname,
        extensions: ['', '.ts', '.js']
      },
      module: {
        loaders: [
          { test: /\.ts$/, loaders: ['ts-loader'], exclude: /node_modules/ },
          { test: /\.hbs/, loaders: ['handlebars-loader'], exclude: /node_modules/ }
        ]
      }
    }

Tsconfig:

    {
      "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": true,
        "outDir": "build"
      },
      "exclude": [
        "node_modules",
        "dist",
        "build"
      ]
    }

生成d.ts如下所示:

    import { ExportPageModel } from './models/page-model';
    export declare type ExportType = 'text' | 'html';
    export * from './models/page-model';
    export declare namespace Generator {
        function generateHtml(page: ExportPageModel): string;
        function generateText(page: ExportPageModel): string;
    }

但是在我使用该包的应用程序中,它找不到生成器...

import { ExportPageModel, Generator } from 'emlb-generator';

生成器未定义,但自动完成工作正常,因此我无法找到问题所在:(

Generator.generateHtml({
 ...
});

共有2个答案

白高逸
2023-03-14

使用汇总的打字稿定义文件

强烈建议您只使用tsc进行编译。为最终应用程序绑定保留汇总。

例如,检查内置的typestylehttps://github.com/typestyle/typestyle/blob/2349f847abaaddaf3de4ca83f585d293b766959e/package.json#L10

陶星辰
2023-03-14

要执行此任务,您需要将指令添加到rollup.config.jstsconfig.jsonpackage.json

考虑汇总版本^0.62.0“

1-添加rollup-plugin-tyescript2的库:

npm i rollup-plugin-typescript2

2-在汇总中导入库。配置。js

从“rollup-plugin-typescript2”导入类型脚本

3-在插件块中包含typescript插件

注:js bellow只是一个示例,所以我删除了其他说明,只是为了让示例更清晰。。。

import typescript from 'rollup-plugin-typescript2'

export default {
  input: 'src/index.tsx',
  output: [
    {
      file: pkg.main,
      format: 'cjs',
      exports: 'named',
      sourcemap: true
    },
    {
      file: pkg.module,
      format: 'es',
      exports: 'named',
      sourcemap: true
    }
  ],
  plugins: [
    typescript({
      rollupCommonJSResolveHack: false,
      clean: true,
    })
  ]
}

4-在tsconfig的编译器选项中添加声明指令。json

注意:我删除了其他说明,只是为了保持示例更清晰。。。

例子:

{
  "compilerOptions": {
    "declaration": true,
  },
  "include": ["src"],
  "exclude": ["node_modules", "build", "dist", "example", "rollup.config.js"]
}

5-将模块指令包含在包中。json通知输出的位置。

最后,在包的脚本中包含rollup-c指令。json,例如:

{
  "name": "example",
  "version": "0.1.6",
  "description": "Testing",
  "author": "Example",
  "license": "AGPL-3.0-or-later",
  "main": "dist/index.js",
  "module": "dist/index.es.js",
  "jsnext:main": "dist/index.es.js",
  "scripts": {
    "build": "rollup -c",
    "start": "rollup -c -w"
  },
  "files": [
    "dist"
  ]
}

 类似资料:
  • 我使用的是精简型脚本SCS的汇总。我的问题是我无法生成源地图。 以下是我的汇总配置文件: 我不确定我到底做错了什么。下面是我正在使用的代码的链接。任何帮助都将不胜感激!

  • 我想从HTML模板中提取一部分,并将其转换为PDF文件,以便用户可以选择下载。(例如,单击按钮后)。 我找到了一个名为jsPDF的库,我将如何在Angular2应用程序(RC4)中使用jsPDF? 谢谢你

  • 本文向大家介绍C#使用第三方组件生成二维码汇总,包括了C#使用第三方组件生成二维码汇总的使用技巧和注意事项,需要的朋友参考一下 用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1.通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示: 1.2):

  • 我正在使用Swashback为ASP生成swagger文档。NET核心API我正在写。在我的API中,我使用了许多自定义Json转换器,因此我接收和返回的Json看起来与C类的定义不完全一样。例如,我可能有这样一个类: 它将被序列化为 然而,Swashuckle将其记录为 我如何告诉Swashback我的模型是如何序列化和反序列化的?

  • 我正在尝试汇总Angular 2应用程序,但我有: 无法解析“app/components/xxx/xxxxx”。来自xxxx\wwwroot\angular\app\app的组件。单元js 应用程序。模块引用了如下所示: 所以tsconfig.js有: 如何在汇总中解析像typescript这样的路径别名? 我试着用 1) https://github.com/frostney/rollup-p

  • 我使用aws cdk设置了我的AppSync api,但没有使用他们的amplify框架。我正在试图弄清楚如何/是否可以从我的AppSync文件,但不使用amplify,即无法访问命令。我确实尝试过安装和运行它,但我假设amplify希望文件位于某些目录中,因此失败了。 我调查https://graphql-code-generator.com但由于AppSync使用的特殊类型(如)无法工作,解决