creator 的 creator.d.ts 是用什么工具从引擎代码生成的

我现在用 tsc 自动生成的 d.ts 是分散的多个文件,用 api-extractor https://api-extractor.com 来合并,但是生成的结果不理想。

creator 的 creator.d.ts 生成的不错,应该是从代码自动生成的,官方用的什么工具呢?

同问,官方提示不全的话,就可以自己建了

求别歪了楼

我是想知道 creator 从 引擎源代码怎么解析生成 d.ts 文件的,在这个过程中官方用到了什么工具,而 不是 找已经生成的 creator.d.ts 在哪获得。

害 大清早的 眼睛花了

贴个地址看看有没有你要的 https://www.cnblogs.com/chenjinxinlove/p/9778609.html

自问自答,找到了,https://github.com/cocos-creator/creator-api-docs/blob/master/gulpfile.js

gulp.task('build-tsd', ['cp-apisrc'], function (cb) {

    const TSD_FOOTER =
`
/** Running in the editor. */
declare const CC_EDITOR: boolean;
/** Preview in browser or simulator. */
declare const CC_PREVIEW: boolean;
/** Running in the editor or preview. */
declare const CC_DEV: boolean;
/** Running in the editor or preview, or build in debug mode. */
declare const CC_DEBUG: boolean;
/** Running in published project. */
declare const CC_BUILD: boolean;
/** Running in native platforms (mobile app, desktop app, or simulator). */
declare const CC_JSB: boolean;
/** Running in runtime environments. */
declare const CC_RUNTIME: boolean;
/** Running in the engine's unit test. */
declare const CC_TEST: boolean;
/** Running in the WeChat Mini Game. */
declare const CC_WECHATGAME: boolean;
`;

    program
        .option('--engine <path to engine>')
        .option('--jsbAdapter <path to jsb-adapter>')
        .option('--dest <tsd path>')
        .parse(process.argv);

    let { engine, jsbAdapter, dest } = program;

    let tsdGen = require('./lib/tsd-generator');
    let cwd = process.cwd();
    process.chdir('lib');
    tsdGen.generateTsd('temp-src/engine', function (err, output) {
        process.chdir(cwd);
        if (err) {
            console.log(err.stack || err);
        }
        else {
            // search docs from engine and jsb adapter directory
            let tsDefines = globby.sync([
                join(engine, '**/*.d.ts'), 
                join(jsbAdapter, '**/*.d.ts'),
                '!' + join(engine, 'node_modules/**/*.d.ts'),
                '!' + join(jsbAdapter, 'node_modules/**/*.d.ts')
            ]);
            tsDefines.forEach(d => {
                output += fs.readFileSync(d) + '\n';
            })
            output += TSD_FOOTER;

            output = hackTweenDoc(output);

            fs.ensureDirSync(dirname(dest));
            fs.writeFileSync(dest, output, 'utf8');
            console.log('Generate tsd file complete, dest path: ' + dest);
        }
        cb();
    });
});

单个文件生成的,没看明白怎么用,第一种生成方法,生成的太粗糙了,很多方法都没有