##// END OF EJS Templates
added tasks to pack typings and sources to npm packages
cin -
r96:d4b81cc5c00f ts-plugin
parent child
Show More
@@ -1,293 +1,323
1 1 plugins {
2 2 id "org.implab.gradle-typescript" version "1.0.1-rc3"
3 3 id "ivy-publish"
4 4 }
5 5
6 6 // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
7 7 // результатом будет версия '{num}.{distance}' где distance - расстояние от
8 8 // текущей ревизии до ревизии с тэгом
9 9 def tagDistance = 0;
10 10
11 11 ext {
12 12 packageName = "@$npmScope/$name"
13 13 lint = project.hasProperty('lint') ? lint : false
14 14 }
15 15
16 16 if (!version) {
17 17
18 18 def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim();
19 19
20 20 def tagVersion;
21 21
22 22 def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/);
23 23
24 24 if (match.size()) {
25 25 tagVersion = match[0][1];
26 26 tagDistance = match[0][2].toInteger();
27 27 } else {
28 28 throw new Exception("A version must be specied");
29 29 }
30 30
31 31 version = tagVersion;
32 32
33 33 if (tagDistance > 0)
34 34 version++;
35 35 } else {
36 36 println "explicit version: $version";
37 37 }
38 38
39 39 if (hasProperty('versionSuffix') && versionSuffix) {
40 40 version += "-$versionSuffix"
41 41 }
42 42
43 43 configurations {
44 44
45 45 }
46 46
47 47 sources {
48 48 amd {
49 49 typings {
50 50 srcDir main.output.typingsDir
51 51 }
52 52 }
53 53
54 54 cjs {
55 55 typings {
56 56 srcDir main.output.typingsDir
57 57 }
58 58 }
59 59
60 60 testAmd {
61 61 typings {
62 62 srcDir main.output.typingsDir
63 63 srcDir amd.output.typingsDir
64 64 srcDir test.output.typingsDir
65 65 }
66 66 }
67 67
68 68 testCjs {
69 69 typings {
70 70 srcDir main.output.typingsDir
71 71 srcDir cjs.output.typingsDir
72 72 srcDir test.output.typingsDir
73 73 }
74 74 }
75 75 }
76 76
77 77 typescript {
78 78 compilerOptions {
79 79 types = []
80 80 declaration = true
81 sourceMap = true
82 sourceRoot = "."
81 83 }
82 84 tscCmd = "$projectDir/node_modules/.bin/tsc"
83 85 tsLintCmd = "$projectDir/node_modules/.bin/tslint"
84 86 esLintCmd = "$projectDir/node_modules/.bin/eslint"
85 87 npmCmd = "npm"
86 88 }
87 89
88 90 tasks.matching{ it.name =~ /^configureTs/ }.configureEach {
89 91 dependsOn "prepare"
90 92 }
91 93
92 94 tasks.matching{ it.name =~ /^lint/ }.configureEach {
93 95 onlyIf { lint }
94 96 }
95 97
96 98 task prepare {
97 99
98 100 }
99 101
100 102 task printVersion {
101 103 dependsOn prepare
102 104
103 105 doLast {
104 106 println "version: ${-> version}";
105 107 println "tagDistance: ${-> tagDistance}";
106 108 println "packageName: ${-> packageName}";
107 109 println "target: ${-> typescript.compilerOptions.target}";
108 110 println "module: ${-> typescript.compilerOptions.module}";
109 111 }
110 112 }
111 113
112 114 task clean {
113 115 prepare.mustRunAfter it
114 116
115 117 doLast {
116 118 delete buildDir
117 119 }
118 120 }
119 121
120 122 npmPackMeta {
121 123 meta {
122 124 name = packageName
123 125 }
124 126 }
125 127
126 128 configureTsCjs {
127 129 dependsOn sources.main.output
128 130 compilerOptions {
129 131 types += [ "node" ]
130 132 }
131 133 }
132 134
133 135 configureTsAmd {
134 136 dependsOn sources.main.output
135 137 compilerOptions {
136 138 types += [ "requirejs", "dojo-typings" ]
137 139 }
138 140 }
139 141
140 142 test {
141 143 workingDir layout.buildDirectory.dir("test");
142 144 commandLine "node", "tests/index.js"
143 145 }
144 146
145 147 task assembleAmd {
146 148 dependsOn sources.amd.output
147 149 assemble.mustRunAfter it
148 150
149 151 doLast {
150 152 assemble {
151 153 from(sources.amd.output.compiledDir)
152 154 }
153 155 }
154 156 }
155 157
156 158 task assembleCjs {
157 159 dependsOn sources.cjs.output
158 160 assemble.mustRunAfter it
159 161
160 162 doLast {
161 163 assemble {
162 164 from(sources.cjs.output.compiledDir)
163 165 }
164 166 }
165 167 }
166 168
167 169 task assembleTestAmd {
168 170 dependsOn sources.amd.output
169 171 dependsOn sources.testAmd.output
170 172 assembleTest.mustRunAfter it
171 173
172 174 doLast {
173 175 assembleTest {
174 176 from(sources.amd.output.compiledDir)
175 177 from(sources.testAmd.output.compiledDir)
176 178 }
177 179 }
178 180 }
179 181
180 182 task assembleTestCjs {
181 183 dependsOn sources.cjs.output
182 184 dependsOn sources.testCjs.output
183 185 assembleTest.mustRunAfter it
184 186
185 187 doLast {
186 188 assembleTest {
187 189 from(sources.cjs.output.compiledDir)
188 190 from(sources.testCjs.output.compiledDir)
189 191 }
190 192 }
191 193 }
192 194
193 195 task prepareTargetEs5 {
194 196 prepare.mustRunAfter it
195 197
196 198 doLast {
197 199 typescript {
198 200 compilerOptions {
199 201 target = "es5"
200 202 lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"]
201 203 }
202 204 }
203 205 }
204 206 }
205 207
206 208 task prepareTargetEsNext {
207 209 prepare.mustRunAfter it
208 210
209 211 doLast {
210 212 typescript {
211 213 compilerOptions {
212 214 target = "es2017"
213 215 lib = ["es2017", "dom", "scripthost"]
214 216 }
215 217 }
216 218 }
217 219 }
218 220
219 221 task prepareNode {
220 222 dependsOn prepareTargetEsNext
221 223 prepare.mustRunAfter it
222 224
223 225 doLast {
224 226 typescript {
225 227 compilerOptions {
226 228 module = "commonjs"
227 229 }
228 230 }
229 231 }
230 232 }
231 233
232 234 task prepareBrowser {
233 235 dependsOn prepareTargetEs5
234 236 prepare.mustRunAfter it
235 237
236 238 doLast {
237 239 packageName = "@$npmScope/$project.name-amd"
238 240
239 241 typescript {
240 242 compilerOptions {
241 243 module = "amd"
242 244 }
243 245 }
244 246 }
245 247 }
246 248
249 task npmPackTypingsAmd(type: Copy) {
250 dependsOn sources.main.output
251 dependsOn sources.amd.output
252 npmPack.mustRunAfter it
253
254 from sources.main.output.typingsDir
255 from sources.amd.output.typingsDir
256
257 into "${->buildDir}/npm/pack"
258 }
259
260 task npmPackSourcesAmd(type: Copy) {
261 from sources.main.ts
262 from sources.amd.ts
263
264 npmPack.mustRunAfter it
265
266 into "${->buildDir}/npm/pack"
267 }
268
247 269 task assembleBrowser {
248 270 dependsOn prepareBrowser, assembleAmd, assemble
249 271 }
250 272
251 273 task assembleNode {
252 274 dependsOn prepareNode, assembleCjs, assemble
253 275 }
254 276
255 277 task testBrowser {
256 278 dependsOn prepareBrowser, assembleTestAmd, test
257 279 }
258 280
259 281 task testNode {
260 282 dependsOn prepareNode, assembleTestCjs, test
261 283 }
262 284
285 task npmPackBrowser {
286 dependsOn assembleBrowser, npmPack, npmPackSourcesAmd, npmPackTypingsAmd
287 }
288
289
263 290 task packJsTar(type: Tar) {
264 291 dependsOn assemble;
265 292
266 293 archiveBaseName = provider { packageName }
267 294
268 295 destinationDirectory = buildDir
269 296 archiveClassifier = provider { typescript.compilerOptions.module }
270 297 compression = Compression.GZIP
271 298
272 299 from(assemble.outputs)
273 300
274 301 doLast {
275 302 println archiveName;
276 303 }
277 304 }
278 305
306 task packTypingsTar(type: Tar) {
307 }
308
279 309 publishing {
280 310 publications {
281 311 local(IvyPublication) {
282 312 artifact(packJsTar) {
283 313 type = "js"
284 314 }
285 315 }
286 316 }
287 317
288 318 repositories {
289 319 ivy {
290 320 url "ivy-repo"
291 321 }
292 322 }
293 323 } No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now