我现在用 tsc 自动生成的 d.ts 是分散的多个文件,用 api-extractor https://api-extractor.com 来合并,但是生成的结果不理想。
creator 的 creator.d.ts 生成的不错,应该是从代码自动生成的,官方用的什么工具呢?
我现在用 tsc 自动生成的 d.ts 是分散的多个文件,用 api-extractor https://api-extractor.com 来合并,但是生成的结果不理想。
creator 的 creator.d.ts 生成的不错,应该是从代码自动生成的,官方用的什么工具呢?
同问,官方提示不全的话,就可以自己建了
求别歪了楼
我是想知道 creator 从 引擎源代码怎么解析生成 d.ts 文件的,在这个过程中官方用到了什么工具,而 不是 找已经生成的 creator.d.ts 在哪获得。
害 大清早的 眼睛花了
自问自答,找到了,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();
});
});
单个文件生成的,没看明白怎么用,第一种生成方法,生成的太粗糙了,很多方法都没有