Patch fomantic-ui to workaround build issue (#11244)
* Patch fomantic-ui to workaround build issue Better workaround than https://github.com/go-gitea/gitea/issues/10653 for https://github.com/fomantic/Fomantic-UI/issues/1356. It does not seem like we're getting a new Fomantic-UI release anytime soon, so this patches it after node_modules installation. Fixes: https://github.com/go-gitea/gitea/issues/11243 Fixes: https://github.com/go-gitea/gitea/issues/10679 * copy instead of patch * update package-lock.json * Update Makefile Co-Authored-By: Sorien <Sorien@users.noreply.github.com> * Update web_src/fomantic/css.js Co-Authored-By: zeripath <art27@cantab.net> Co-authored-by: Sorien <Sorien@users.noreply.github.com> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									bfda0f3864
								
							
						
					
					
						commit
						310699bca7
					
				
							
								
								
									
										7
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										7
									
								
								Makefile
								
								
								
								
							|  | @ -107,7 +107,7 @@ endif | ||||||
| 
 | 
 | ||||||
| GO_SOURCES_OWN := $(filter-out vendor/% %/bindata.go, $(GO_SOURCES)) | GO_SOURCES_OWN := $(filter-out vendor/% %/bindata.go, $(GO_SOURCES)) | ||||||
| 
 | 
 | ||||||
| FOMANTIC_CONFIGS := semantic.json web_src/fomantic/theme.config.less web_src/fomantic/_site/globals/site.variables | FOMANTIC_CONFIGS := semantic.json web_src/fomantic/theme.config.less web_src/fomantic/_site/globals/site.variables web_src/fomantic/css.js | ||||||
| FOMANTIC_DEST := public/fomantic/semantic.min.js public/fomantic/semantic.min.css | FOMANTIC_DEST := public/fomantic/semantic.min.js public/fomantic/semantic.min.css | ||||||
| FOMANTIC_DEST_DIR := public/fomantic | FOMANTIC_DEST_DIR := public/fomantic | ||||||
| 
 | 
 | ||||||
|  | @ -589,7 +589,8 @@ fomantic: $(FOMANTIC_DEST) | ||||||
| $(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) package-lock.json | node_modules | $(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) package-lock.json | node_modules | ||||||
| 	rm -rf $(FOMANTIC_DEST_DIR) | 	rm -rf $(FOMANTIC_DEST_DIR) | ||||||
| 	cp web_src/fomantic/theme.config.less node_modules/fomantic-ui/src/theme.config | 	cp web_src/fomantic/theme.config.less node_modules/fomantic-ui/src/theme.config | ||||||
| 	cp web_src/fomantic/_site/globals/* node_modules/fomantic-ui/src/_site/globals/ | 	cp -r web_src/fomantic/_site/* node_modules/fomantic-ui/src/_site/ | ||||||
|  | 	cp web_src/fomantic/css.js node_modules/fomantic-ui/tasks/build/css.js | ||||||
| 	npx gulp -f node_modules/fomantic-ui/gulpfile.js build | 	npx gulp -f node_modules/fomantic-ui/gulpfile.js build | ||||||
| 	@touch $(FOMANTIC_DEST) | 	@touch $(FOMANTIC_DEST) | ||||||
| 
 | 
 | ||||||
|  | @ -654,4 +655,4 @@ golangci-lint: | ||||||
| 	golangci-lint run --timeout 5m | 	golangci-lint run --timeout 5m | ||||||
| 
 | 
 | ||||||
| # This endif closes the if at the top of the file
 | # This endif closes the if at the top of the file
 | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | @ -2910,50 +2910,6 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "copy-webpack-plugin": { |  | ||||||
|       "version": "5.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", |  | ||||||
|       "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", |  | ||||||
|       "requires": { |  | ||||||
|         "cacache": "^12.0.3", |  | ||||||
|         "find-cache-dir": "^2.1.0", |  | ||||||
|         "glob-parent": "^3.1.0", |  | ||||||
|         "globby": "^7.1.1", |  | ||||||
|         "is-glob": "^4.0.1", |  | ||||||
|         "loader-utils": "^1.2.3", |  | ||||||
|         "minimatch": "^3.0.4", |  | ||||||
|         "normalize-path": "^3.0.0", |  | ||||||
|         "p-limit": "^2.2.1", |  | ||||||
|         "schema-utils": "^1.0.0", |  | ||||||
|         "serialize-javascript": "^2.1.2", |  | ||||||
|         "webpack-log": "^2.0.0" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "p-limit": { |  | ||||||
|           "version": "2.3.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", |  | ||||||
|           "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", |  | ||||||
|           "requires": { |  | ||||||
|             "p-try": "^2.0.0" |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|         "p-try": { |  | ||||||
|           "version": "2.2.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", |  | ||||||
|           "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" |  | ||||||
|         }, |  | ||||||
|         "schema-utils": { |  | ||||||
|           "version": "1.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", |  | ||||||
|           "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", |  | ||||||
|           "requires": { |  | ||||||
|             "ajv": "^6.1.0", |  | ||||||
|             "ajv-errors": "^1.0.0", |  | ||||||
|             "ajv-keywords": "^3.1.0" |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "core-js": { |     "core-js": { | ||||||
|       "version": "3.6.5", |       "version": "3.6.5", | ||||||
|       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", |       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", | ||||||
|  | @ -3620,14 +3576,6 @@ | ||||||
|         "randombytes": "^2.0.0" |         "randombytes": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "dir-glob": { |  | ||||||
|       "version": "2.2.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", |  | ||||||
|       "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", |  | ||||||
|       "requires": { |  | ||||||
|         "path-type": "^3.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "doctrine": { |     "doctrine": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", | ||||||
|  | @ -5926,26 +5874,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", |       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", | ||||||
|       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" |       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" | ||||||
|     }, |     }, | ||||||
|     "globby": { |  | ||||||
|       "version": "7.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", |  | ||||||
|       "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", |  | ||||||
|       "requires": { |  | ||||||
|         "array-union": "^1.0.1", |  | ||||||
|         "dir-glob": "^2.0.0", |  | ||||||
|         "glob": "^7.1.2", |  | ||||||
|         "ignore": "^3.3.5", |  | ||||||
|         "pify": "^3.0.0", |  | ||||||
|         "slash": "^1.0.0" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "pify": { |  | ||||||
|           "version": "3.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", |  | ||||||
|           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "globjoin": { |     "globjoin": { | ||||||
|       "version": "0.1.4", |       "version": "0.1.4", | ||||||
|       "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", |       "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", | ||||||
|  | @ -7289,11 +7217,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", |       "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", | ||||||
|       "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" |       "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" | ||||||
|     }, |     }, | ||||||
|     "ignore": { |  | ||||||
|       "version": "3.3.10", |  | ||||||
|       "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", |  | ||||||
|       "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" |  | ||||||
|     }, |  | ||||||
|     "image-size": { |     "image-size": { | ||||||
|       "version": "0.5.5", |       "version": "0.5.5", | ||||||
|       "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", |       "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", | ||||||
|  | @ -9945,21 +9868,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", |       "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", | ||||||
|       "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" |       "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" | ||||||
|     }, |     }, | ||||||
|     "path-type": { |  | ||||||
|       "version": "3.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", |  | ||||||
|       "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", |  | ||||||
|       "requires": { |  | ||||||
|         "pify": "^3.0.0" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "pify": { |  | ||||||
|           "version": "3.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", |  | ||||||
|           "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "pbkdf2": { |     "pbkdf2": { | ||||||
|       "version": "3.0.17", |       "version": "3.0.17", | ||||||
|       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", |       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", | ||||||
|  | @ -12371,11 +12279,6 @@ | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "slash": { |  | ||||||
|       "version": "1.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", |  | ||||||
|       "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" |  | ||||||
|     }, |  | ||||||
|     "slice-ansi": { |     "slice-ansi": { | ||||||
|       "version": "2.1.0", |       "version": "2.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", |       "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", | ||||||
|  | @ -14483,7 +14386,8 @@ | ||||||
|     "uuid": { |     "uuid": { | ||||||
|       "version": "3.4.0", |       "version": "3.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", |       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||||||
|       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" |       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", | ||||||
|  |       "optional": true | ||||||
|     }, |     }, | ||||||
|     "v-tooltip": { |     "v-tooltip": { | ||||||
|       "version": "2.0.3", |       "version": "2.0.3", | ||||||
|  | @ -15125,15 +15029,6 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.4.0.tgz", |       "resolved": "https://registry.npmjs.org/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.4.0.tgz", | ||||||
|       "integrity": "sha512-6TDa56V/xSOw6CBVlhFm6J+xXY2oJzx7CEgH0dmex2Xe1rwb95KkLl3rXvSNpO4wyahwD3YnYqffDNR0LH1BNQ==" |       "integrity": "sha512-6TDa56V/xSOw6CBVlhFm6J+xXY2oJzx7CEgH0dmex2Xe1rwb95KkLl3rXvSNpO4wyahwD3YnYqffDNR0LH1BNQ==" | ||||||
|     }, |     }, | ||||||
|     "webpack-log": { |  | ||||||
|       "version": "2.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", |  | ||||||
|       "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", |  | ||||||
|       "requires": { |  | ||||||
|         "ansi-colors": "^3.0.0", |  | ||||||
|         "uuid": "^3.3.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "webpack-sources": { |     "webpack-sources": { | ||||||
|       "version": "1.4.3", |       "version": "1.4.3", | ||||||
|       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", |       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", | ||||||
|  |  | ||||||
|  | @ -13,7 +13,6 @@ | ||||||
|     "@primer/octicons": "9.6.0", |     "@primer/octicons": "9.6.0", | ||||||
|     "babel-loader": "8.1.0", |     "babel-loader": "8.1.0", | ||||||
|     "clipboard": "2.0.6", |     "clipboard": "2.0.6", | ||||||
|     "copy-webpack-plugin": "5.1.1", |  | ||||||
|     "core-js": "3.6.5", |     "core-js": "3.6.5", | ||||||
|     "css-loader": "3.5.2", |     "css-loader": "3.5.2", | ||||||
|     "cssnano": "4.1.10", |     "cssnano": "4.1.10", | ||||||
|  |  | ||||||
|  | @ -0,0 +1,260 @@ | ||||||
|  | /******************************* | ||||||
|  |  *          Build Task | ||||||
|  |  *******************************/ | ||||||
|  | 
 | ||||||
|  | const | ||||||
|  |   gulp         = require('gulp'), | ||||||
|  | 
 | ||||||
|  |   // node dependencies
 | ||||||
|  |   console      = require('better-console'), | ||||||
|  | 
 | ||||||
|  |   // gulp dependencies
 | ||||||
|  |   autoprefixer = require('gulp-autoprefixer'), | ||||||
|  |   chmod        = require('gulp-chmod'), | ||||||
|  |   concatCSS    = require('gulp-concat-css'), | ||||||
|  |   dedupe       = require('gulp-dedupe'), | ||||||
|  |   flatten      = require('gulp-flatten'), | ||||||
|  |   gulpif       = require('gulp-if'), | ||||||
|  |   header       = require('gulp-header'), | ||||||
|  |   less         = require('gulp-less'), | ||||||
|  |   minifyCSS    = require('gulp-clean-css'), | ||||||
|  |   normalize    = require('normalize-path'), | ||||||
|  |   plumber      = require('gulp-plumber'), | ||||||
|  |   print        = require('gulp-print').default, | ||||||
|  |   rename       = require('gulp-rename'), | ||||||
|  |   replace      = require('gulp-replace'), | ||||||
|  |   replaceExt   = require('replace-ext'), | ||||||
|  |   rtlcss       = require('gulp-rtlcss'), | ||||||
|  | 
 | ||||||
|  |   // config
 | ||||||
|  |   config       = require('./../config/user'), | ||||||
|  |   docsConfig   = require('./../config/docs'), | ||||||
|  |   tasks        = require('../config/tasks'), | ||||||
|  |   install      = require('../config/project/install'), | ||||||
|  | 
 | ||||||
|  |   // shorthand
 | ||||||
|  |   globs        = config.globs, | ||||||
|  |   assets       = config.paths.assets, | ||||||
|  | 
 | ||||||
|  |   banner       = tasks.banner, | ||||||
|  |   filenames    = tasks.filenames, | ||||||
|  |   comments     = tasks.regExp.comments, | ||||||
|  |   log          = tasks.log, | ||||||
|  |   settings     = tasks.settings | ||||||
|  | ; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Builds the css | ||||||
|  |  * @param src | ||||||
|  |  * @param type | ||||||
|  |  * @param compress | ||||||
|  |  * @param config | ||||||
|  |  * @param opts | ||||||
|  |  * @return {*} | ||||||
|  |  */ | ||||||
|  | function build(src, type, compress, config, opts) { | ||||||
|  |   let fileExtension; | ||||||
|  |   if (type === 'rtl' && compress) { | ||||||
|  |     fileExtension = settings.rename.rtlMinCSS; | ||||||
|  |   } else if (type === 'rtl') { | ||||||
|  |     fileExtension = settings.rename.rtlCSS; | ||||||
|  |   } else if (compress) { | ||||||
|  |     fileExtension = settings.rename.minCSS; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return gulp.src(src, opts) | ||||||
|  |     .pipe(plumber(settings.plumber.less)) | ||||||
|  |     .pipe(less(settings.less)) | ||||||
|  |     .pipe(autoprefixer(settings.prefix)) | ||||||
|  |     .pipe(gulpif(type === 'rtl', rtlcss())) | ||||||
|  |     .pipe(replace(comments.variables.in, comments.variables.out)) | ||||||
|  |     .pipe(replace(comments.license.in, comments.license.out)) | ||||||
|  |     .pipe(replace(comments.large.in, comments.large.out)) | ||||||
|  |     .pipe(replace(comments.small.in, comments.small.out)) | ||||||
|  |     .pipe(replace(comments.tiny.in, comments.tiny.out)) | ||||||
|  |     .pipe(flatten()) | ||||||
|  |     .pipe(replace(config.paths.assets.source, | ||||||
|  |       compress ? config.paths.assets.compressed : config.paths.assets.uncompressed)) | ||||||
|  |     .pipe(gulpif(compress, minifyCSS(settings.minify))) | ||||||
|  |     .pipe(gulpif(fileExtension, rename(fileExtension))) | ||||||
|  |     .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) | ||||||
|  |     .pipe(gulp.dest(compress ? config.paths.output.compressed : config.paths.output.uncompressed)) | ||||||
|  |     .pipe(print(log.created)) | ||||||
|  |     ; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Packages the css files in dist | ||||||
|  |  * @param {string} type - type of the css processing (none, rtl, docs) | ||||||
|  |  * @param {boolean} compress - should the output be compressed | ||||||
|  |  */ | ||||||
|  | function pack(type, compress) { | ||||||
|  |   const output       = type === 'docs' ? docsConfig.paths.output : config.paths.output; | ||||||
|  |   const ignoredGlobs = type === 'rtl' ? globs.ignoredRTL + '.rtl.css' : globs.ignored + '.css'; | ||||||
|  | 
 | ||||||
|  |   let concatenatedCSS; | ||||||
|  |   if (type === 'rtl') { | ||||||
|  |     concatenatedCSS = compress ? filenames.concatenatedMinifiedRTLCSS : filenames.concatenatedRTLCSS; | ||||||
|  |   } else { | ||||||
|  |     concatenatedCSS = compress ? filenames.concatenatedMinifiedCSS : filenames.concatenatedCSS; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return gulp.src(output.uncompressed + '/**/' + globs.components + ignoredGlobs) | ||||||
|  |     .pipe(plumber()) | ||||||
|  |     .pipe(dedupe()) | ||||||
|  |     .pipe(replace(assets.uncompressed, assets.packaged)) | ||||||
|  |     .pipe(concatCSS(concatenatedCSS, settings.concatCSS)) | ||||||
|  |     .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) | ||||||
|  |     .pipe(gulpif(compress, minifyCSS(settings.concatMinify))) | ||||||
|  |     .pipe(header(banner, settings.header)) | ||||||
|  |     .pipe(gulp.dest(output.packaged)) | ||||||
|  |     .pipe(print(log.created)) | ||||||
|  |     ; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function buildCSS(src, type, config, opts, callback) { | ||||||
|  |   if (!install.isSetup()) { | ||||||
|  |     console.error('Cannot build CSS files. Run "gulp install" to set-up Semantic'); | ||||||
|  |     callback(); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (callback === undefined) { | ||||||
|  |     callback = opts; | ||||||
|  |     opts     = config; | ||||||
|  |     config   = type; | ||||||
|  |     type     = src; | ||||||
|  |     src      = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   const buildUncompressed       = () => build(src, type, false, config, opts); | ||||||
|  |   buildUncompressed.displayName = 'Building uncompressed CSS'; | ||||||
|  | 
 | ||||||
|  |   const buildCompressed       = () => build(src, type, true, config, opts); | ||||||
|  |   buildCompressed.displayName = 'Building compressed CSS'; | ||||||
|  | 
 | ||||||
|  |   const packUncompressed       = () => pack(type, false); | ||||||
|  |   packUncompressed.displayName = 'Packing uncompressed CSS'; | ||||||
|  | 
 | ||||||
|  |   const packCompressed       = () => pack(type, true); | ||||||
|  |   packCompressed.displayName = 'Packing compressed CSS'; | ||||||
|  | 
 | ||||||
|  |   gulp.parallel( | ||||||
|  |     gulp.series( | ||||||
|  |       buildUncompressed, | ||||||
|  |       gulp.parallel(packUncompressed, packCompressed) | ||||||
|  |     ), | ||||||
|  |     gulp.series(buildCompressed) | ||||||
|  |   )(callback); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function rtlAndNormal(src, callback) { | ||||||
|  |   if (callback === undefined) { | ||||||
|  |     callback = src; | ||||||
|  |     src      = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   const rtl       = (callback) => buildCSS(src, 'rtl', config, {}, callback); | ||||||
|  |   rtl.displayName = "CSS Right-To-Left"; | ||||||
|  |   const css       = (callback) => buildCSS(src, 'default', config, {}, callback); | ||||||
|  |   css.displayName = "CSS"; | ||||||
|  | 
 | ||||||
|  |   if (config.rtl === true || config.rtl === 'Yes') { | ||||||
|  |     rtl(callback); | ||||||
|  |   } else if (config.rtl === 'both') { | ||||||
|  |     gulp.series(rtl, css)(callback); | ||||||
|  |   } else { | ||||||
|  |     css(callback); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function docs(src, callback) { | ||||||
|  |   if (callback === undefined) { | ||||||
|  |     callback = src; | ||||||
|  |     src      = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   const func       = (callback) => buildCSS(src, 'docs', config, {}, callback); | ||||||
|  |   func.displayName = "CSS Docs"; | ||||||
|  | 
 | ||||||
|  |   func(callback); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Default tasks
 | ||||||
|  | module.exports = rtlAndNormal; | ||||||
|  | 
 | ||||||
|  | // We keep the changed files in an array to call build with all of them at the same time
 | ||||||
|  | let timeout, files = []; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Watch changes in CSS files and call the correct build pipe | ||||||
|  |  * @param type | ||||||
|  |  * @param config | ||||||
|  |  */ | ||||||
|  | module.exports.watch = function (type, config) { | ||||||
|  |   const method = type === 'docs' ? docs : rtlAndNormal; | ||||||
|  | 
 | ||||||
|  |   // Watch theme.config file
 | ||||||
|  |   gulp.watch([ | ||||||
|  |     normalize(config.paths.source.config), | ||||||
|  |     normalize(config.paths.source.site + '/**/site.variables'), | ||||||
|  |     normalize(config.paths.source.themes + '/**/site.variables') | ||||||
|  |   ]) | ||||||
|  |     .on('all', function () { | ||||||
|  |       // Clear timeout and reset files
 | ||||||
|  |       timeout && clearTimeout(timeout); | ||||||
|  |       files = []; | ||||||
|  |       return gulp.series(method)(); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |   // Watch any less / overrides / variables files
 | ||||||
|  |   gulp.watch([ | ||||||
|  |     normalize(config.paths.source.definitions + '/**/*.less'), | ||||||
|  |     normalize(config.paths.source.site + '/**/*.{overrides,variables}'), | ||||||
|  |     normalize(config.paths.source.themes + '/**/*.{overrides,variables}') | ||||||
|  |   ]) | ||||||
|  |     .on('all', function (event, path) { | ||||||
|  |       // We don't handle deleted files yet
 | ||||||
|  |       if (event === 'unlink' || event === 'unlinkDir') { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       // Clear timeout
 | ||||||
|  |       timeout && clearTimeout(timeout); | ||||||
|  | 
 | ||||||
|  |       // Determine which LESS file has to be recompiled
 | ||||||
|  |       let lessPath; | ||||||
|  |       if(path.indexOf('site.variables') !== -1)  { | ||||||
|  |         return; | ||||||
|  |       } else if (path.indexOf(config.paths.source.themes) !== -1) { | ||||||
|  |         console.log('Change detected in packaged theme'); | ||||||
|  |         lessPath = replaceExt(path, '.less'); | ||||||
|  |         lessPath = lessPath.replace(tasks.regExp.theme, config.paths.source.definitions); | ||||||
|  |       } else if (path.indexOf(config.paths.source.site) !== -1) { | ||||||
|  |         console.log('Change detected in site theme'); | ||||||
|  |         lessPath = replaceExt(path, '.less'); | ||||||
|  |         lessPath = lessPath.replace(config.paths.source.site, config.paths.source.definitions); | ||||||
|  |       } else { | ||||||
|  |         console.log('Change detected in definition'); | ||||||
|  |         lessPath = path; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       // Add file to internal changed files array
 | ||||||
|  |       if (!files.includes(lessPath)) { | ||||||
|  |         files.push(lessPath); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       // Update timeout
 | ||||||
|  |       timeout = setTimeout(() => { | ||||||
|  |         // Copy files to build in another array
 | ||||||
|  |         const buildFiles = [...files]; | ||||||
|  |         // Call method
 | ||||||
|  |         gulp.series((callback) => method(buildFiles, callback))(); | ||||||
|  |         // Reset internal changed files array
 | ||||||
|  |         files = []; | ||||||
|  |       }, 1000); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // Expose build css method
 | ||||||
|  | module.exports.buildCSS = buildCSS; | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| const cssnano = require('cssnano'); | const cssnano = require('cssnano'); | ||||||
| const fastGlob = require('fast-glob'); | const fastGlob = require('fast-glob'); | ||||||
| const CopyPlugin = require('copy-webpack-plugin'); |  | ||||||
| const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries'); | const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries'); | ||||||
| const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | ||||||
| const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); | const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); | ||||||
|  | @ -210,10 +209,6 @@ module.exports = { | ||||||
|     new SpriteLoaderPlugin({ |     new SpriteLoaderPlugin({ | ||||||
|       plainSprite: true, |       plainSprite: true, | ||||||
|     }), |     }), | ||||||
|     new CopyPlugin([ |  | ||||||
|       // workaround for https://github.com/go-gitea/gitea/issues/10653
 |  | ||||||
|       {from: 'node_modules/fomantic-ui/dist/semantic.min.css', to: 'fomantic/semantic.min.css'}, |  | ||||||
|     ]), |  | ||||||
|   ], |   ], | ||||||
|   performance: { |   performance: { | ||||||
|     hints: false, |     hints: false, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue