##// END OF EJS Templates
restructuring
cin -
r175:fc69b40ceb98 tip default
parent child
Show More
@@ -10,6 +10,17 typescript {
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 = {
@@ -21,7 +32,15 def typingsFromMain = {
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}")
@@ -30,82 +49,150 variants {
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 role "main"
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(srcAmd) {
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