##// END OF EJS Templates
restructuring
cin -
r175:fc69b40ceb98 tip default
parent child
Show More
@@ -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 role "main"
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(srcAmd) {
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