使用webpack生成包TypeScript定义文件

sso*_*nez 3 typescript webpack

我目前正在使用“ gulp”来生成我的捆绑包的定义文件,如下所示:

dtsGenerator.default({
    name: 'ngFramework',
    project: './',
    out: './Typings/raw/index.d.ts'
});
Run Code Online (Sandbox Code Playgroud)

但是,我正在迁移到webpack,我想找到一种方法来做同样的事情。我尝试了“ tsconfig”中的“ declaration”标志,但它只是为每个单独的“ ts”文件创建了定义文件,这不是我想要的(我想要捆绑包的定义文件)。

我尝试了“ dtsbundler-webpack-plugin”,但无法按预期工作。没有“ tsconfig”的“ declaration”标志,生成的文件为“ 0字节”,有了它,我有很多错误。

kho*_*vat 5

您应该将dts-bundle与WebPack一起使用以生成捆绑包。您应该将声明标志保留为true并尝试以下操作:

一般

var path = require('path');
var rootDir = path.resolve(__dirname);
Run Code Online (Sandbox Code Playgroud)

编写简单的插件

function DtsBundlePlugin() {}
DtsBundlePlugin.prototype.apply = function (compiler) {
    compiler.plugin('done', function () {
        var dts = require('dts-bundle');

        dts.bundle({
            name: 'your-lib-name',
            main: rootDir + '/build/types/**/*.d.ts',
            out: rootDir + '/build/index.d.ts',
            removeSource: true,
            outputAsModuleFolder: true 
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

可以在Vladimir Tolstikov的博客中找到更多信息。

寄存器

plugins: [
    new DtsBundlePlugin()
]
Run Code Online (Sandbox Code Playgroud)

我已经设法绑定了类型,但是与源代码相关的绑定代码出现了一些问题。

  • 这看起来很像[此弗拉基米尔·托尔斯蒂科夫(Vladimir Tolstikov)的博客文章]中的代码(https://medium.com/@vladimirtolstikov/how-to-merge-d-ts-typings-with-dts-bundle-and-webpack- e8903d699576)。您从那里复制了吗?如果是这样,给予信任将对您有利。 (4认同)