| @@ -1,111 +1,198 | |||||
| 1 | plugins { |
|
1 | plugins { | |
| 2 | id "org.implab.gradle-typescript" |
|
2 | id "org.implab.gradle-typescript" | |
| 3 | id "org.implab.gradle-npm-package" |
|
3 | id "org.implab.gradle-npm-package" | |
| 4 | id "ivy-publish" |
|
4 | id "ivy-publish" | |
| 5 | } |
|
5 | } | |
| 6 |
|
6 | |||
| 7 | typescript { |
|
7 | typescript { | |
| 8 | useTsc npm.bin("tsc") |
|
8 | useTsc npm.bin("tsc") | |
| 9 |
|
9 | |||
| 10 | compilerOptions { |
|
10 | compilerOptions { | |
| 11 | incremental = true |
|
11 | incremental = true | |
| 12 | } |
|
12 | } | |
|
|
13 | ||||
|
|
14 | jsVariants { | |||
|
|
15 | node { | |||
|
|
16 | jsRuntime = "node" | |||
|
|
17 | jsModule = "commonjs" | |||
|
|
18 | } | |||
|
|
19 | browser { | |||
|
|
20 | jsRuntime = "browser" | |||
|
|
21 | jsModule = "amd" | |||
|
|
22 | } | |||
|
|
23 | } | |||
| 13 | } |
|
24 | } | |
| 14 |
|
25 | |||
| 15 | def typingsFromMain = { |
|
26 | def typingsFromMain = { | |
| 16 | sets { |
|
27 | sets { | |
| 17 | named("compileOnlyTypings") { |
|
28 | named("compileOnlyTypings") { | |
| 18 | srcDir main.output("typings") |
|
29 | srcDir main.output("typings") | |
| 19 | } |
|
30 | } | |
| 20 | } |
|
31 | } | |
| 21 | } |
|
32 | } | |
| 22 |
|
33 | |||
| 23 | variants { |
|
34 | variants { | |
|
|
35 | all { | |||
|
|
36 | ||||
|
|
37 | } | |||
|
|
38 | } | |||
|
|
39 | ||||
|
|
40 | // варианты сборки | |||
|
|
41 | variants { | |||
| 24 | configureEach { variant -> |
|
42 | configureEach { variant -> | |
|
|
43 | // для каждого варианта есть стандартные настройки | |||
| 25 | def sourceSetLocation = { setName, self -> |
|
44 | def sourceSetLocation = { setName, self -> | |
| 26 | self.sourceSetDir = layout.projectDirectory.dir("src/${setName}") |
|
45 | self.sourceSetDir = layout.projectDirectory.dir("src/${setName}") | |
| 27 | self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}") |
|
46 | self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}") | |
| 28 | } |
|
47 | } | |
| 29 |
|
48 | |||
| 30 | def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main")) |
|
49 | def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main")) | |
| 31 | def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test")) |
|
50 | def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test")) | |
| 32 |
|
51 | |||
|
|
52 | // явно добавляем наборы в вариант для применения политик и агрегации результатов | |||
| 33 | sourceSets { |
|
53 | sourceSets { | |
| 34 |
add(main) |
|
54 | add(main, role: "main") | |
| 35 |
|
|
55 | add(test, role: "test") | |
| 36 | } |
|
|||
| 37 | add(test) { |
|
|||
| 38 | role "test" |
|
|||
| 39 | } |
|
|||
| 40 | } |
|
56 | } | |
| 41 | } |
|
57 | } | |
| 42 | register("browser") { |
|
58 | register("browser") { | |
| 43 | def srcAmd = sources.register("amd", typingsFromMain) |
|
59 | // специфичные наборы для варианта | |
|
|
60 | def srcMainAmd = sources.register("mainAmd", typingsFromMain) | |||
| 44 | def srcTestAmd = sources.register("testAmd", typingsFromMain) |
|
61 | def srcTestAmd = sources.register("testAmd", typingsFromMain) | |
| 45 |
|
62 | |||
|
|
63 | // применение аспекта компиляции ts для данного варианта | |||
| 46 | // advice to all TypescriptCompile tasks |
|
64 | // advice to all TypescriptCompile tasks | |
| 47 | typescriptCompile { |
|
65 | typescriptCompile { | |
| 48 | baseTsConfig = file("src/tsconfig.browser.json") |
|
66 | baseTsConfig = file("src/tsconfig.browser.json") | |
| 49 | } |
|
67 | } | |
| 50 |
|
68 | |||
| 51 | // creates npmPackBrowser, npmPublishBrowser |
|
69 | sourceSets { | |
| 52 | npmPackage { |
|
70 | add(srcMainAmd, role: "main") | |
| 53 | usePackageJson() |
|
71 | add(srcTestAmd, role: "test") | |
| 54 | metadata { |
|
72 | } | |
| 55 | name = "@implab/core-amd" |
|
|||
| 56 | } |
|
73 | } | |
| 57 | content { |
|
74 | register("node") { | |
| 58 | from sourceSets.byRoles("main").allOutputs() |
|
75 | // специфичные наборы для варианта | |
| 59 | } |
|
76 | def srcMainCjs = sources.register("mainCjs", typingsFromMain) | |
|
|
77 | def srcTestCjs = sources.register("testCjs", typingsFromMain) | |||
|
|
78 | ||||
|
|
79 | // применение аспекта компиляции ts для данного варианта | |||
|
|
80 | typescriptCompile { | |||
|
|
81 | baseTsConfig = file("src/tsconfig.node.json") | |||
| 60 | } |
|
82 | } | |
| 61 |
|
83 | |||
| 62 | sourceSets { |
|
84 | sourceSets { | |
| 63 |
add(src |
|
85 | add(srcMainCjs, role: "main") | |
| 64 | role "main" |
|
86 | add(srcTestCjs, role: "test") | |
| 65 | } |
|
|||
| 66 | add(srcTestAmd) { |
|
|||
| 67 | role "test" |
|
|||
| 68 |
|
|
87 | } | |
| 69 |
|
|
88 | } | |
| 70 | } |
|
89 | } | |
| 71 | register("node") { |
|
|||
| 72 | def srcCjs = sources.register("cjs", typingsFromMain) |
|
|||
| 73 | def srcTestCjs = sources.register("testCjs", typingsFromMain) |
|
|||
| 74 |
|
90 | |||
| 75 | compileTasks { |
|
91 | npmPackaging { | |
| 76 | baseTsConfig = file("src/tsconfig.node.json") |
|
|||
| 77 | } |
|
|||
| 78 |
|
||||
| 79 | npmPackage { |
|
|||
| 80 | name = "@implab/core" |
|
|||
| 81 | } |
|
|||
| 82 |
|
||||
| 83 | sourceSets { |
|
|||
| 84 | add srcAmd |
|
|||
| 85 | add srcTestAmd |
|
|||
| 86 | } |
|
|||
| 87 | } |
|
|||
| 88 |
|
||||
| 89 | npmPackage { |
|
|||
| 90 | usePackageJson() |
|
92 | usePackageJson() | |
| 91 | metadata { |
|
93 | metadata { | |
| 92 | name = "@implab/core" |
|
94 | name = "@implab/core" | |
| 93 | version = project.provider { project.version.toString() } |
|
95 | version = project.provider { project.version.toString() } | |
| 94 | } |
|
96 | } | |
|
|
97 | ||||
|
|
98 | // creates writeBrowserPackageJson npmPackBrowser, npmPublishBrowser | |||
|
|
99 | variant("browser") { | |||
|
|
100 | metadata { | |||
|
|
101 | name = "@implab/core-amd" | |||
|
|
102 | } | |||
|
|
103 | variantOutputs("main") | |||
|
|
104 | } | |||
|
|
105 | // creates writeNodePackageJson, npmPackNode, npmPublishNode | |||
|
|
106 | variant("node") { | |||
|
|
107 | metadata { | |||
|
|
108 | name = "@implab/core-node" | |||
|
|
109 | } | |||
|
|
110 | variantOutputs("main") | |||
| 95 | } |
|
111 | } | |
| 96 |
|
112 | |||
| 97 | publishing { |
|
113 | // creates writePackageJson, npmPack, npmPublish | |
| 98 | publications { |
|
114 | package { | |
| 99 | local(IvyPublication) { |
|
115 | metadata { | |
| 100 | artifact(packJsTar) { |
|
116 | name = "@implab/core-amd" | |
| 101 | type = "js" |
|
117 | } | |
|
|
118 | content { // CopySpec | |||
|
|
119 | // как-то кривенько | |||
|
|
120 | from(variants.named("node").map { it.outputs("main") }) { | |||
|
|
121 | into "dist/node" | |||
|
|
122 | } | |||
|
|
123 | from(variants.named("browser").map { it.outputs("main") }) { | |||
|
|
124 | into "dist/node" | |||
|
|
125 | } | |||
| 102 |
|
|
126 | } | |
| 103 |
|
|
127 | } | |
| 104 | } |
|
128 | } | |
| 105 |
|
129 | |||
|
|
130 | outgoingJs { | |||
|
|
131 | ||||
|
|
132 | } | |||
|
|
133 | ||||
|
|
134 | outgoingVariants { | |||
|
|
135 | // registers nodeElements configuration | |||
|
|
136 | variant("node") { // ConfigurationPublications | |||
|
|
137 | // как-то шумно | |||
|
|
138 | attribute(JS_RUNTIME, "node") | |||
|
|
139 | attribute(JS_MODULE, "commonjs") | |||
|
|
140 | attribute(JS_TARGET, "es2020") | |||
|
|
141 | attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "npm-module")) | |||
|
|
142 | ||||
|
|
143 | // основной артефакт, связь по имени задачи, неудачный вариант | |||
|
|
144 | artifact(tasks.named("npmPackNode")) | |||
|
|
145 | ||||
|
|
146 | // variants... кругом variants | |||
|
|
147 | variants { | |||
|
|
148 | exploded { | |||
|
|
149 | attributes { | |||
|
|
150 | // шумновато, но это стандартное API gradle | |||
|
|
151 | attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "exploded-npm-module")) | |||
|
|
152 | } | |||
|
|
153 | // связь по имени задачи, неудачный вариант | |||
|
|
154 | artifact(tasks.named("assembleNodeModule")) | |||
|
|
155 | } | |||
|
|
156 | typings { | |||
|
|
157 | attributes { | |||
|
|
158 | attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "typescript-typings")) | |||
|
|
159 | } | |||
|
|
160 | // связь по имени задачи, неудачный вариант | |||
|
|
161 | artifact(tasks.named("assembleNode")) | |||
|
|
162 | } | |||
|
|
163 | } | |||
|
|
164 | } | |||
|
|
165 | variant("browser") { | |||
|
|
166 | // все те же проблемы что и для variant("node") | |||
|
|
167 | ||||
|
|
168 | attribute(JS_RUNTIME, "browser") | |||
|
|
169 | attribute(JS_MODULE, "amd") | |||
|
|
170 | attribute(JS_TARGET, "es2015") | |||
|
|
171 | attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "npm-module")) | |||
|
|
172 | artifact(tasks.named("npmPackBrowser")) | |||
|
|
173 | ||||
|
|
174 | variants { | |||
|
|
175 | variants { | |||
|
|
176 | typings { | |||
|
|
177 | attributes { | |||
|
|
178 | attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "typescript-typings")) | |||
|
|
179 | } | |||
|
|
180 | artifact(tasks.named("assembleNode")) | |||
|
|
181 | } | |||
|
|
182 | } | |||
|
|
183 | } | |||
|
|
184 | } | |||
|
|
185 | } | |||
|
|
186 | ||||
|
|
187 | publishing { | |||
| 106 | repositories { |
|
188 | repositories { | |
| 107 | ivy { |
|
189 | ivy { | |
| 108 | url "ivy-repo" |
|
190 | url "${System.properties["user.home"]}/ivy-repo" | |
|
|
191 | } | |||
|
|
192 | } | |||
|
|
193 | publications { | |||
|
|
194 | ivy(IvyPublication) { | |||
|
|
195 | from components.js | |||
| 109 | } |
|
196 | } | |
| 110 | } |
|
197 | } | |
| 111 | } No newline at end of file |
|
198 | } | |
| 1 | NO CONTENT: file renamed from src/amd/js/Uri.js to src/mainAmd/js/Uri.js |
|
NO CONTENT: file renamed from src/amd/js/Uri.js to src/mainAmd/js/Uri.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/DataContext.js to src/mainAmd/js/data/DataContext.js |
|
NO CONTENT: file renamed from src/amd/js/data/DataContext.js to src/mainAmd/js/data/DataContext.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/MapSchema.js to src/mainAmd/js/data/MapSchema.js |
|
NO CONTENT: file renamed from src/amd/js/data/MapSchema.js to src/mainAmd/js/data/MapSchema.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/RestStore.js to src/mainAmd/js/data/RestStore.js |
|
NO CONTENT: file renamed from src/amd/js/data/RestStore.js to src/mainAmd/js/data/RestStore.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/StoreAdapter.js to src/mainAmd/js/data/StoreAdapter.js |
|
NO CONTENT: file renamed from src/amd/js/data/StoreAdapter.js to src/mainAmd/js/data/StoreAdapter.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/_ModelBase.js to src/mainAmd/js/data/_ModelBase.js |
|
NO CONTENT: file renamed from src/amd/js/data/_ModelBase.js to src/mainAmd/js/data/_ModelBase.js |
| 1 | NO CONTENT: file renamed from src/amd/js/data/_StatefulModelMixin.js to src/mainAmd/js/data/_StatefulModelMixin.js |
|
NO CONTENT: file renamed from src/amd/js/data/_StatefulModelMixin.js to src/mainAmd/js/data/_StatefulModelMixin.js |
| 1 | NO CONTENT: file renamed from src/amd/js/declare/override.js to src/mainAmd/js/declare/override.js |
|
NO CONTENT: file renamed from src/amd/js/declare/override.js to src/mainAmd/js/declare/override.js |
| 1 | NO CONTENT: file renamed from src/amd/js/messaging/Client.js to src/mainAmd/js/messaging/Client.js |
|
NO CONTENT: file renamed from src/amd/js/messaging/Client.js to src/mainAmd/js/messaging/Client.js |
| 1 | NO CONTENT: file renamed from src/amd/js/messaging/Destination.js to src/mainAmd/js/messaging/Destination.js |
|
NO CONTENT: file renamed from src/amd/js/messaging/Destination.js to src/mainAmd/js/messaging/Destination.js |
| 1 | NO CONTENT: file renamed from src/amd/js/messaging/Listener.js to src/mainAmd/js/messaging/Listener.js |
|
NO CONTENT: file renamed from src/amd/js/messaging/Listener.js to src/mainAmd/js/messaging/Listener.js |
| 1 | NO CONTENT: file renamed from src/amd/js/messaging/Session.js to src/mainAmd/js/messaging/Session.js |
|
NO CONTENT: file renamed from src/amd/js/messaging/Session.js to src/mainAmd/js/messaging/Session.js |
| 1 | NO CONTENT: file renamed from src/amd/ts/di/ResolverHelper.ts to src/mainAmd/ts/di/ResolverHelper.ts |
|
NO CONTENT: file renamed from src/amd/ts/di/ResolverHelper.ts to src/mainAmd/ts/di/ResolverHelper.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/log/trace.ts to src/mainAmd/ts/log/trace.ts |
|
NO CONTENT: file renamed from src/amd/ts/log/trace.ts to src/mainAmd/ts/log/trace.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/text/TemplateCompiler.ts to src/mainAmd/ts/text/TemplateCompiler.ts |
|
NO CONTENT: file renamed from src/amd/ts/text/TemplateCompiler.ts to src/mainAmd/ts/text/TemplateCompiler.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/text/TemplateParser.ts to src/mainAmd/ts/text/TemplateParser.ts |
|
NO CONTENT: file renamed from src/amd/ts/text/TemplateParser.ts to src/mainAmd/ts/text/TemplateParser.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/text/format-compile.ts to src/mainAmd/ts/text/format-compile.ts |
|
NO CONTENT: file renamed from src/amd/ts/text/format-compile.ts to src/mainAmd/ts/text/format-compile.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/text/format.ts to src/mainAmd/ts/text/format.ts |
|
NO CONTENT: file renamed from src/amd/ts/text/format.ts to src/mainAmd/ts/text/format.ts |
| 1 | NO CONTENT: file renamed from src/amd/ts/text/template-compile.ts to src/mainAmd/ts/text/template-compile.ts |
|
NO CONTENT: file renamed from src/amd/ts/text/template-compile.ts to src/mainAmd/ts/text/template-compile.ts |
| 1 | NO CONTENT: file renamed from src/amd/tsconfig.json to src/mainAmd/tsconfig.json |
|
NO CONTENT: file renamed from src/amd/tsconfig.json to src/mainAmd/tsconfig.json |
| 1 | NO CONTENT: file renamed from src/cjs/ts/di/ResolverHelper.ts to src/mainCjs/ts/di/ResolverHelper.ts |
|
NO CONTENT: file renamed from src/cjs/ts/di/ResolverHelper.ts to src/mainCjs/ts/di/ResolverHelper.ts |
| 1 | NO CONTENT: file renamed from src/cjs/tsconfig.json to src/mainCjs/tsconfig.json |
|
NO CONTENT: file renamed from src/cjs/tsconfig.json to src/mainCjs/tsconfig.json |
General Comments 0
You need to be logged in to leave comments.
Login now
