| @@ -1,111 +1,198 | |||
|
|
1 | 1 | plugins { |
|
|
2 | 2 | id "org.implab.gradle-typescript" |
|
|
3 | 3 | id "org.implab.gradle-npm-package" |
|
|
4 | 4 | id "ivy-publish" |
|
|
5 | 5 | } |
|
|
6 | 6 | |
|
|
7 | 7 | typescript { |
|
|
8 | 8 | useTsc npm.bin("tsc") |
|
|
9 | 9 | |
|
|
10 | 10 | compilerOptions { |
|
|
11 | 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 | 26 | def typingsFromMain = { |
|
|
16 | 27 | sets { |
|
|
17 | 28 | named("compileOnlyTypings") { |
|
|
18 | 29 | srcDir main.output("typings") |
|
|
19 | 30 | } |
|
|
20 | 31 | } |
|
|
21 | 32 | } |
|
|
22 | 33 | |
|
|
23 | 34 | variants { |
|
|
35 | all { | |
|
|
36 | ||
|
|
37 | } | |
|
|
38 | } | |
|
|
39 | ||
|
|
40 | // варианты сборки | |
|
|
41 | variants { | |
|
|
24 | 42 | configureEach { variant -> |
|
|
43 | // для каждого варианта есть стандартные настройки | |
|
|
25 | 44 | def sourceSetLocation = { setName, self -> |
|
|
26 | 45 | self.sourceSetDir = layout.projectDirectory.dir("src/${setName}") |
|
|
27 | 46 | self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}") |
|
|
28 | 47 | } |
|
|
29 | 48 | |
|
|
30 | 49 | def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main")) |
|
|
31 | 50 | def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test")) |
|
|
32 | 51 | |
|
|
52 | // явно добавляем наборы в вариант для применения политик и агрегации результатов | |
|
|
33 | 53 | sourceSets { |
|
|
34 |
add(main) |
|
|
|
35 |
|
|
|
|
36 | } | |
|
|
37 | add(test) { | |
|
|
38 | role "test" | |
|
|
39 | } | |
|
|
54 | add(main, role: "main") | |
|
|
55 | add(test, role: "test") | |
|
|
40 | 56 | } |
|
|
41 | 57 | } |
|
|
42 | 58 | register("browser") { |
|
|
43 | def srcAmd = sources.register("amd", typingsFromMain) | |
|
|
59 | // специфичные наборы для варианта | |
|
|
60 | def srcMainAmd = sources.register("mainAmd", typingsFromMain) | |
|
|
44 | 61 | def srcTestAmd = sources.register("testAmd", typingsFromMain) |
|
|
45 | 62 | |
|
|
63 | // применение аспекта компиляции ts для данного варианта | |
|
|
46 | 64 | // advice to all TypescriptCompile tasks |
|
|
47 | 65 | typescriptCompile { |
|
|
48 | 66 | baseTsConfig = file("src/tsconfig.browser.json") |
|
|
49 | 67 | } |
|
|
50 | 68 | |
|
|
51 | // creates npmPackBrowser, npmPublishBrowser | |
|
|
52 | npmPackage { | |
|
|
53 | usePackageJson() | |
|
|
54 | metadata { | |
|
|
55 | name = "@implab/core-amd" | |
|
|
69 | sourceSets { | |
|
|
70 | add(srcMainAmd, role: "main") | |
|
|
71 | add(srcTestAmd, role: "test") | |
|
|
72 | } | |
|
|
56 | 73 | } |
|
|
57 | content { | |
|
|
58 | from sourceSets.byRoles("main").allOutputs() | |
|
|
59 | } | |
|
|
74 | register("node") { | |
|
|
75 | // специфичные наборы для варианта | |
|
|
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 | 84 | sourceSets { |
|
|
63 |
add(src |
|
|
|
64 | role "main" | |
|
|
65 | } | |
|
|
66 | add(srcTestAmd) { | |
|
|
67 | role "test" | |
|
|
85 | add(srcMainCjs, role: "main") | |
|
|
86 | add(srcTestCjs, 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 { | |
|
|
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 { | |
|
|
91 | npmPackaging { | |
|
|
90 | 92 | usePackageJson() |
|
|
91 | 93 | metadata { |
|
|
92 | 94 | name = "@implab/core" |
|
|
93 | 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 { | |
|
|
98 | publications { | |
|
|
99 | local(IvyPublication) { | |
|
|
100 | artifact(packJsTar) { | |
|
|
101 | type = "js" | |
|
|
113 | // creates writePackageJson, npmPack, npmPublish | |
|
|
114 | package { | |
|
|
115 | metadata { | |
|
|
116 | name = "@implab/core-amd" | |
|
|
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 | 188 | repositories { |
|
|
107 | 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 | 198 | } No newline at end of file |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
|
|
1 | 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 |
General Comments 0
You need to be logged in to leave comments.
Login now
