Use standard lessc and minify CSS using Node.js (#2337)
* Use standard lessc and minify CSS using Node.js This changes the previous nonstandard `lessc` to the official one and enables CSS minification via the clean-css module. To build CSS, Node.js is required along with a `npm install` to get the tools installed locally in node_modules so there is no dependency on binaries in PATH. Benefits include: - Allows one to have a standard lessc in PATH. - Can now use command line switches on lessc. - Minified CSS brings faster page load times and also has the benefit of discouraging contributors from editing CSS directly. To build CSS, Node.js is required along with a `npm install` to get the tools installed locally based on the information in `package.json`. The 'make stylesheet' task was modified to run without condition. This makes it easier to work on the make task itself without having to delete files. Also fixes: https://github.com/go-gitea/gitea/issues/2198 * install node, npm and modules on drone * .PHONY * use 'minify' to minify CSS
This commit is contained in:
		
							parent
							
								
									fa1cbc2896
								
							
						
					
					
						commit
						1fbfccb4fc
					
				
					 6 changed files with 25 additions and 3139 deletions
				
			
		|  | @ -16,6 +16,8 @@ pipeline: | |||
|       TAGS: bindata sqlite | ||||
|       GOPATH: /srv/app | ||||
|     commands: | ||||
|       - apk -U add nodejs nodejs-npm | ||||
|       - npm install | ||||
|       - make clean | ||||
|       - make generate | ||||
|       - make vet | ||||
|  |  | |||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -58,3 +58,4 @@ coverage.all | |||
| /integrations/indexers-sqlite | ||||
| /integrations/mysql.ini | ||||
| /integrations/pgsql.ini | ||||
| /node_modules | ||||
|  |  | |||
|  | @ -97,6 +97,16 @@ and is synced regularily to Crowdin. Once a translation has reached | |||
| A SATISFACTORY PERCENTAGE it will be synced back into this repo and | ||||
| included in the next released version. | ||||
| 
 | ||||
| ## Building Gitea | ||||
| 
 | ||||
| Generally, the go build tools are installed as-needed in the `Makefile`. | ||||
| An exception are the tools to build the CSS and images. | ||||
| 
 | ||||
| - To build CSS: Install [Node.js](https://nodejs.org/en/download/package-manager) | ||||
|   with `npm` and then run `npm install` and `make stylesheets`. | ||||
| - To build Images: ImageMagick, inkscape and zopflipng binaries must be | ||||
|   available in your `PATH` to run `make generate-images`. | ||||
| 
 | ||||
| ## Code review | ||||
| 
 | ||||
| Changes to Gitea must be reviewed before they are accepted, no matter who | ||||
|  |  | |||
							
								
								
									
										13
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -15,7 +15,6 @@ else | |||
| endif | ||||
| 
 | ||||
| BINDATA := modules/{options,public,templates}/bindata.go | ||||
| STYLESHEETS := $(wildcard public/less/index.less public/less/_*.less) | ||||
| DOCKER_TAG := gitea/gitea:latest | ||||
| GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go") | ||||
| GOFMT ?= gofmt -s | ||||
|  | @ -299,14 +298,12 @@ stylesheets-check: stylesheets | |||
| 	fi; | ||||
| 
 | ||||
| .PHONY: stylesheets | ||||
| stylesheets: public/css/index.css | ||||
| 
 | ||||
| .IGNORE: public/css/index.css | ||||
| public/css/index.css: $(STYLESHEETS) | ||||
| 	@which lessc > /dev/null; if [ $$? -ne 0 ]; then \
 | ||||
| 		$(GO) get -u github.com/kib357/less-go/lessc; \
 | ||||
| stylesheets: | ||||
| 	@hash minify > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
 | ||||
| 		$(GO) get -u github.com/tdewolff/minify/cmd/minify; \
 | ||||
| 	fi | ||||
| 	lessc -i $< -o $@ | ||||
| 	node_modules/.bin/lessc --no-ie-compat public/less/index.less public/css/index.css | ||||
| 	minify -o public/css/index.css public/css/index.css | ||||
| 
 | ||||
| .PHONY: swagger-ui | ||||
| swagger-ui: | ||||
|  |  | |||
							
								
								
									
										6
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| { | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "less": "^2.7.2" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										3132
									
								
								public/css/index.css
									
									
									
									
									
								
							
							
						
						
									
										3132
									
								
								public/css/index.css
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in a new issue