forked from TypeStrong/typedoc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgruntfile.js
115 lines (106 loc) · 3.99 KB
/
gruntfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
module.exports = function(grunt)
{
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
ts: {
typedoc: {
options: {
basePath: 'src',
declaration: true,
comments: true,
sourceMap: false
},
src: ['src/**/*.ts'],
out: 'bin/typedoc.js'
},
typescript: {
options: {
sourceMap: false,
declaration: true
},
src: [
'typescript/src/compiler/core.ts',
'typescript/src/compiler/sys.ts',
'typescript/src/compiler/types.ts',
'typescript/src/compiler/scanner.ts',
'typescript/src/compiler/parser.ts',
'typescript/src/compiler/binder.ts',
'typescript/src/compiler/checker.ts',
'typescript/src/compiler/emitter.ts',
'typescript/src/compiler/commandLineParser.ts',
'typescript/src/compiler/tsc.ts',
'typescript/src/compiler/diagnosticInformationMap.generated.ts'
],
out: 'src/lib/typescript/tsc.js'
}
},
'string-replace': {
version: {
files: {
'bin/typedoc.js': ['bin/typedoc.js']
},
options: {
replacements: [{
pattern: /{{ VERSION }}/g,
replacement: '<%= pkg.version %>'
}]
}
}
},
clean: {
specsBefore: ['test/renderer/specs'],
specsAfter: ['test/renderer/specs/assets']
},
watch: {
source: {
files: ['src/**/*.ts'],
tasks: ['ts:typedoc', 'string-replace:version']
}
},
mocha_istanbul: {
coverage: {
src: 'test',
options: {
mask: '*.js'
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-string-replace');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-ts');
grunt.loadNpmTasks('grunt-mocha-istanbul');
grunt.registerTask('default', ['ts:typedoc', 'string-replace:version']);
grunt.registerTask('build_and_test', ['default', 'specs', 'mocha_istanbul:coverage']);
grunt.registerTask('specs', ['clean:specsBefore', 'build-specs', 'clean:specsAfter']);
grunt.registerTask('build-specs', function() {
var FS = require('fs');
var Path = require('path');
var TypeDoc = require(Path.join(__dirname, 'bin', 'typedoc.js'));
var base = Path.join(__dirname, 'test', 'converter');
var app = new TypeDoc.Application({
mode: 'Modules',
target: 'ES5',
module: 'CommonJS',
noLib: true,
experimentalDecorators: true
});
FS.readdirSync(Path.join(base)).forEach(function(directory) {
var path = Path.join(base, directory);
if (!FS.lstatSync(path).isDirectory()) return;
TypeDoc.models.resetReflectionID();
var src = app.expandInputFiles([path]);
var out = Path.join(base, directory, 'specs.json');
var result = app.convert(src);
var data = JSON.stringify(result.toObject(), null, ' ');
data = data.split(TypeDoc.normalizePath(base)).join('%BASE%');
FS.writeFileSync(out, data);
});
var src = Path.join(__dirname, 'examples', 'basic', 'src');
var out = Path.join(__dirname, 'test', 'renderer', 'specs');
TypeDoc.FS.removeSync(out);
app.generateDocs(app.expandInputFiles([src]), out);
TypeDoc.FS.removeSync(Path.join(out, 'assets'));
});
};