mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 13:41:21 +00:00
GUACAMOLE-773: Migrate to NPM for AngularJS portion of webapp build.
This commit is contained in:
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