Skip to content

Commit

Permalink
Use standard lessc and minify CSS using Node.js (go-gitea#2337)
Browse files Browse the repository at this point in the history
* 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: go-gitea#2198

* install node, npm and modules on drone

* .PHONY

* use 'minify' to minify CSS
  • Loading branch information
silverwind authored and lunny committed Sep 21, 2017
1 parent fa1cbc2 commit 1fbfccb
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 3,139 deletions.
2 changes: 2 additions & 0 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,4 @@ coverage.all
/integrations/indexers-sqlite
/integrations/mysql.ini
/integrations/pgsql.ini
/node_modules
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 5 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
6 changes: 6 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"license": "MIT",
"dependencies": {
"less": "^2.7.2"
}
}
Loading

0 comments on commit 1fbfccb

Please sign in to comment.