mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 17:13:21 +00:00 
			
		
		
		
	GUACAMOLE-773: Migrate to NPM for AngularJS portion of webapp build.
This commit is contained in:
		| @@ -0,0 +1,2 @@ | ||||
| src/main/frontend/dist/**/* | ||||
| src/main/frontend/generated/**/* | ||||
|   | ||||
| @@ -80,9 +80,18 @@ | ||||
|  | ||||
|                     <webResources> | ||||
|  | ||||
|                         <!-- Filter translation strings --> | ||||
|                         <!-- Add frontend folder to war package ... --> | ||||
|                         <resource> | ||||
|                             <directory>src/main/webapp</directory> | ||||
|                             <directory>src/main/frontend/dist</directory> | ||||
|                             <excludes> | ||||
|                                 <exclude>translations/*.json</exclude> | ||||
|                                 <exclude>index.html</exclude> | ||||
|                             </excludes> | ||||
|                         </resource> | ||||
|  | ||||
|                         <!-- ... but filter index.html and translation strings --> | ||||
|                         <resource> | ||||
|                             <directory>src/main/frontend/dist</directory> | ||||
|                             <filtering>true</filtering> | ||||
|                             <includes> | ||||
|                                 <include>translations/*.json</include> | ||||
| @@ -119,81 +128,43 @@ | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|  | ||||
|             <!-- Pre-cache Angular templates with maven-angular-plugin --> | ||||
|             <!-- Build AngularJS portion of application using NPM --> | ||||
|             <plugin> | ||||
|                 <groupId>com.keithbranton.mojo</groupId> | ||||
|                 <artifactId>angular-maven-plugin</artifactId> | ||||
|                 <version>0.3.4</version> | ||||
|                 <groupId>com.github.eirslett</groupId> | ||||
|                 <artifactId>frontend-maven-plugin</artifactId> | ||||
|                 <version>1.6</version> | ||||
|                 <configuration> | ||||
|                     <workingDirectory>src/main/frontend</workingDirectory> | ||||
|                     <installDirectory>${project.build.directory}</installDirectory> | ||||
|                 </configuration> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <id>install-node-and-npm</id> | ||||
|                         <goals> | ||||
|                             <goal>install-node-and-npm</goal> | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <nodeVersion>v14.16.0</nodeVersion> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                     <execution> | ||||
|                         <id>npm-ci</id> | ||||
|                         <goals> | ||||
|                             <goal>npm</goal> | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <arguments>ci</arguments> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                     <execution> | ||||
|                         <id>npm-build</id> | ||||
|                         <phase>generate-resources</phase> | ||||
|                         <goals> | ||||
|                             <goal>html2js</goal> | ||||
|                             <goal>npm</goal> | ||||
|                         </goals> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|                 <configuration> | ||||
|                     <sourceDir>${basedir}/src/main/webapp/app/</sourceDir> | ||||
|                     <include>**/*.html</include> | ||||
|                     <target>${basedir}/src/main/webapp/generated/templates-main/templates.js</target> | ||||
|                     <prefix>app</prefix> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|  | ||||
|             <!-- JS/CSS Minification Plugin --> | ||||
|             <plugin> | ||||
|                 <groupId>com.github.buckelieg</groupId> | ||||
|                 <artifactId>minify-maven-plugin</artifactId> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <id>default-cli</id> | ||||
|                         <configuration> | ||||
|                             <charset>UTF-8</charset> | ||||
|  | ||||
|                             <webappSourceDir>${project.build.directory}/${project.build.finalName}</webappSourceDir> | ||||
|  | ||||
|                             <cssSourceDir>/</cssSourceDir> | ||||
|                             <cssTargetDir>/</cssTargetDir> | ||||
|                             <cssFinalFile>guacamole.css</cssFinalFile> | ||||
|  | ||||
|                             <cssSourceFiles> | ||||
|                                 <cssSourceFile>license.txt</cssSourceFile> | ||||
|                             </cssSourceFiles> | ||||
|                              | ||||
|                             <cssSourceIncludes> | ||||
|                                 <cssSourceInclude>app/**/*.css</cssSourceInclude> | ||||
|                             </cssSourceIncludes> | ||||
|  | ||||
|                             <jsSourceDir>/</jsSourceDir> | ||||
|                             <jsTargetDir>/</jsTargetDir> | ||||
|                             <jsFinalFile>guacamole.js</jsFinalFile> | ||||
|                              | ||||
|                             <jsSourceFiles> | ||||
|                                 <jsSourceFile>license.txt</jsSourceFile> | ||||
|                                 <jsSourceFile>guacamole-common-js/all.js</jsSourceFile> | ||||
|                             </jsSourceFiles> | ||||
|  | ||||
|                             <jsSourceIncludes> | ||||
|                                 <jsSourceInclude>app/**/*.js</jsSourceInclude> | ||||
|                                 <jsSourceInclude>generated/**/*.js</jsSourceInclude> | ||||
|                             </jsSourceIncludes> | ||||
|  | ||||
|                             <!-- Do not minify and include tests --> | ||||
|                             <jsSourceExcludes> | ||||
|                                 <jsSourceExclude>**/*.test.js</jsSourceExclude> | ||||
|                             </jsSourceExcludes> | ||||
|                             <jsEngine>CLOSURE</jsEngine> | ||||
|  | ||||
|                             <!-- Disable warnings for JSDoc annotations --> | ||||
|                             <closureWarningLevels> | ||||
|                                 <misplacedTypeAnnotation>OFF</misplacedTypeAnnotation> | ||||
|                                 <nonStandardJsDocs>OFF</nonStandardJsDocs> | ||||
|                             </closureWarningLevels> | ||||
|  | ||||
|                             <arguments>run build</arguments> | ||||
|                         </configuration> | ||||
|                         <goals> | ||||
|                             <goal>minify</goal> | ||||
|                         </goals> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
| @@ -249,117 +220,6 @@ | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- WebJars servlet (for serving org.webjars.* resources) --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars</groupId> | ||||
|             <artifactId>webjars-servlet-2.x</artifactId> | ||||
|             <version>1.5</version> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Polyfills for the Blob and FileSaver APIs --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>blob-polyfill</artifactId> | ||||
|             <version>1.0.20150320</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>filesaver</artifactId> | ||||
|             <version>1.3.3</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Lodash --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>lodash</artifactId> | ||||
|             <version>4.17.10</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- jQuery --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>jquery</artifactId> | ||||
|             <version>3.3.1</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- AngularJS --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular</artifactId> | ||||
|             <version>1.6.9</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-route</artifactId> | ||||
|             <version>1.6.9</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-touch</artifactId> | ||||
|             <version>1.6.9</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Shim allowing arbitrary retrieval/creation order for AngularJS modules --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-module-shim</artifactId> | ||||
|             <version>0.0.4</version> | ||||
|             <scope>runtime</scope> | ||||
|             <exclusions> | ||||
|                 <exclusion> | ||||
|                     <groupId>org.webjars.bower</groupId> | ||||
|                     <artifactId>angular</artifactId> | ||||
|                 </exclusion> | ||||
|             </exclusions> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Translation support for AngularJS --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-translate</artifactId> | ||||
|             <version>2.16.0</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-translate-interpolation-messageformat</artifactId> | ||||
|             <version>2.16.0</version> | ||||
|             <scope>runtime</scope> | ||||
|             <exclusions> | ||||
|                 <exclusion> | ||||
|                     <groupId>org.webjars.bower</groupId> | ||||
|                     <artifactId>messageformat</artifactId> | ||||
|                 </exclusion> | ||||
|             </exclusions> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>messageformat</artifactId> | ||||
|             <version>1.0.2</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.bower</groupId> | ||||
|             <artifactId>angular-translate-loader-static-files</artifactId> | ||||
|             <version>2.16.0</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Polyfill for <datalist> element support --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.npm</groupId> | ||||
|             <artifactId>datalist-polyfill</artifactId> | ||||
|             <version>1.14.0</version> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Jetty 8 servlet API (websocket)  --> | ||||
|         <dependency> | ||||
|             <groupId>org.eclipse.jetty</groupId> | ||||
| @@ -474,20 +334,6 @@ | ||||
|             <artifactId>guava</artifactId> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- JSTZ for TimeZone Detection --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.npm</groupId> | ||||
|             <artifactId>jstz</artifactId> | ||||
|             <version>1.0.10</version> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- Pickr (JavaScript color picker) --> | ||||
|         <dependency> | ||||
|             <groupId>org.webjars.npm</groupId> | ||||
|             <artifactId>simonwep__pickr</artifactId> | ||||
|             <version>1.2.6</version> | ||||
|         </dependency> | ||||
|  | ||||
|     </dependencies> | ||||
|  | ||||
| </project> | ||||
|   | ||||
							
								
								
									
										4
									
								
								guacamole/src/main/frontend/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								guacamole/src/main/frontend/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| *~ | ||||
| node_modules | ||||
| dist | ||||
| generated | ||||
| @@ -16,3 +16,19 @@ | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * @fileoverview External APIs referenced by the source of the Guacamole webapp | ||||
|  * and its dependencies. | ||||
|  * @externs | ||||
|  */ | ||||
| 
 | ||||
| // guacamole-common-js
 | ||||
| const Guacamole = {}; | ||||
| 
 | ||||
| // Web Storage API
 | ||||
| const localStorage = {}; | ||||
| 
 | ||||
| // matchMedia() function of Window object
 | ||||
| const matchMedia = function matchMedia(str) {} | ||||
| 
 | ||||
							
								
								
									
										105
									
								
								guacamole/src/main/frontend/gulpfile.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								guacamole/src/main/frontend/gulpfile.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, | ||||
|  * software distributed under the License is distributed on an | ||||
|  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
|  * KIND, either express or implied.  See the License for the | ||||
|  * specific language governing permissions and limitations | ||||
|  * under the License. | ||||
|  */ | ||||
|  | ||||
| const angularFilesort = require('gulp-angular-filesort'); | ||||
| const cleanCss = require('gulp-clean-css'); | ||||
| const concat = require('gulp-concat'); | ||||
| const del = require('del'); | ||||
| const gulp = require('gulp'); | ||||
| const ngHtml2Js = require("gulp-ng-html2js"); | ||||
| const sourcemaps = require('gulp-sourcemaps'); | ||||
| const webpack = require('webpack-stream'); | ||||
|  | ||||
| // Clean build files | ||||
| gulp.task('clean', (callback) => del([ | ||||
|     'dist', | ||||
|     'generated' | ||||
| ], callback)); | ||||
|  | ||||
| // Build monolithic, minified CSS source | ||||
| gulp.task('build-css', | ||||
|     () => gulp.src([ | ||||
|             'node_modules/@simonwep/pickr/dist/themes/monolith.min.css', | ||||
|             'src/app/**/*.css' | ||||
|         ]) | ||||
|         .pipe(sourcemaps.init()) | ||||
|         .pipe(concat('guacamole.min.css')) | ||||
|         .pipe(cleanCss()) | ||||
|         .pipe(sourcemaps.write('./')) | ||||
|         .pipe(gulp.dest('dist')) | ||||
| ); | ||||
|  | ||||
| // Pre-cache AngularJS templates | ||||
| gulp.task('build-template-js', | ||||
|     () => gulp.src('src/app/**/*.html') | ||||
|         .pipe(ngHtml2Js({ | ||||
|             moduleName: 'templates-main', | ||||
|             prefix: 'app/' | ||||
|         })) | ||||
|         .pipe(concat('templates.js')) | ||||
|         .pipe(gulp.dest('generated')) | ||||
| ); | ||||
|  | ||||
| // Build monolithic combined JavaScript source containing all pre-cached | ||||
| // templates and all AngularJS module declarations in the proper order | ||||
| gulp.task('build-combined-js', | ||||
|     () => gulp.src([ | ||||
|             'src/app/**/*.js', | ||||
|             'generated/templates.js' | ||||
|         ]) | ||||
|         .pipe(angularFilesort()) | ||||
|         .pipe(sourcemaps.init()) | ||||
|         .pipe(concat('guacamole.js')) | ||||
|         .pipe(sourcemaps.write('./')) | ||||
|         .pipe(gulp.dest('generated')) | ||||
| ); | ||||
|  | ||||
| // Process monolithic JavaScript source through WebPack to produce a bundle | ||||
| // that contains all required dependencies | ||||
| gulp.task('build-webpack-bundle', | ||||
|     () => gulp.src('generated/guacamole.js') | ||||
|         .pipe(webpack(require('./webpack.config.js'))) | ||||
|         .pipe(gulp.dest('dist')) | ||||
| ); | ||||
|  | ||||
| // Build all JavaScript for the entire application | ||||
| gulp.task('build-js',  gulp.series( | ||||
|     'build-template-js', | ||||
|     'build-combined-js', | ||||
|     'build-webpack-bundle' | ||||
| )); | ||||
|  | ||||
| // Copy plain, static contents of application | ||||
| gulp.task('copy-static', | ||||
|     () => gulp.src([ | ||||
|         'src/relocateParameters.js', | ||||
|         'src/index.html', | ||||
|         'src/fonts/**/*', | ||||
|         'src/images/**/*', | ||||
|         'src/layouts/**/*', | ||||
|         'src/translations/**/*' | ||||
|     ], { base: './src' }) | ||||
|     .pipe(gulp.dest('dist')) | ||||
| ); | ||||
|  | ||||
| gulp.task('default', gulp.series( | ||||
|     'clean', | ||||
|     gulp.parallel('build-css', 'build-js', 'copy-static') | ||||
| )); | ||||
|  | ||||
							
								
								
									
										6808
									
								
								guacamole/src/main/frontend/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6808
									
								
								guacamole/src/main/frontend/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										36
									
								
								guacamole/src/main/frontend/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								guacamole/src/main/frontend/package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| { | ||||
|     "private": true, | ||||
|     "scripts": { | ||||
|         "build": "gulp" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@simonwep/pickr": "1.2.6", | ||||
|         "angular": "1.6.9", | ||||
|         "angular-route": "1.6.9", | ||||
|         "angular-touch": "1.6.9", | ||||
|         "angular-translate": "2.16.0", | ||||
|         "angular-translate-interpolation-messageformat": "2.16.0", | ||||
|         "angular-translate-loader-static-files": "2.16.0", | ||||
|         "blob-polyfill": "1.0.20150320", | ||||
|         "datalist-polyfill": "1.14.0", | ||||
|         "file-saver": "1.3.3", | ||||
|         "jquery": "3.3.1", | ||||
|         "jstz": "1.0.10", | ||||
|         "lodash": "4.17.10", | ||||
|         "messageformat": "1.0.2" | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "closure-webpack-plugin": "^2.5.0", | ||||
|         "del": "^6.0.0", | ||||
|         "google-closure-compiler": "^20210302.0.0", | ||||
|         "gulp": "^4.0.2", | ||||
|         "gulp-angular-filesort": "^1.2.1", | ||||
|         "gulp-clean-css": "^4.3.0", | ||||
|         "gulp-concat": "^2.6.1", | ||||
|         "gulp-ng-html2js": "^0.2.3", | ||||
|         "gulp-sourcemaps": "^3.0.0", | ||||
|         "source-map-loader": "^1.1.3", | ||||
|         "webpack": "^4.46.0", | ||||
|         "webpack-stream": "^6.1.2" | ||||
|     } | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user