Add Node.js build dep, remove built js/css files (#9114)

- Added Node.js as build dependency and removes build files from git.
- Added version checks for both Go and Node.js.
- Overhauled the js/css make target to only run when needed.
- Merged the `generate` make target into `build` as per suggestion.

Fixes: https://github.com/go-gitea/gitea/issues/6782
Fixes: https://github.com/go-gitea/gitea/issues/9216
This commit is contained in:
silverwind
2019-12-05 04:41:38 +01:00
committed by Lunny Xiao
parent d0287faf66
commit ac91ffc0d1
2 changed files with 23 additions and 15 deletions

View File

@@ -23,6 +23,10 @@ environment variable and to add the go bin directory or directories
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for `${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
[GOPATH](https://github.com/golang/go/wiki/GOPATH). [GOPATH](https://github.com/golang/go/wiki/GOPATH).
Next, [install Node.js with npm](https://nodejs.org/en/download/) which is
required to build the JavaScript and CSS files. The minimum supported Node.js
version is 10 and the latest LTS version is recommended.
You will also need make. You will also need make.
<a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a> <a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a>
@@ -98,7 +102,7 @@ from source</a>.
The simplest recommended way to build from source is: The simplest recommended way to build from source is:
```bash ```bash
TAGS="bindata sqlite sqlite_unlock_notify" make generate build TAGS="bindata sqlite sqlite_unlock_notify" make build
``` ```
However, there are a number of additional make tasks you should be aware of. However, there are a number of additional make tasks you should be aware of.
@@ -136,19 +140,17 @@ You should run revive, vet and spell-check on the code with:
make revive vet misspell-check make revive vet misspell-check
``` ```
### Updating CSS ### Working on CSS
To generate the CSS, you need [Node.js](https://nodejs.org/) 8.0 or greater with npm. We use [less](http://lesscss.org/) and [postcss](https://postcss.org) to generate our CSS. Do **not** edit the files in `public/css` directly, as they are generated from `lessc` from the files in `public/less`. Edit files in `web_src/less` and run the linter and build the CSS files via:
Edit files in `public/less`, and then run the linter and build the CSS files via:
```bash ```bash
make css make css
``` ```
### Updating JS ### Working on JS
To generate the JS files, you need [Node.js](https://nodejs.org/) 8.0 or greater with npm. Edit files in `public/js`, run the linter and build the JS files via: Edit files in `web_src/js`, run the linter and build the JS files via:
```bash ```bash
make js make js
@@ -235,7 +237,7 @@ Unit tests will not and cannot completely test Gitea alone. Therefore, we
have written integration tests; however, these are database dependent. have written integration tests; however, these are database dependent.
```bash ```bash
TAGS="bindata sqlite sqlite_unlock_notify" make generate build test-sqlite TAGS="bindata sqlite sqlite_unlock_notify" make build test-sqlite
``` ```
will run the integration tests in an sqlite environment. Other database tests will run the integration tests in an sqlite environment. Other database tests

View File

@@ -21,6 +21,10 @@ environment variable and to add the go bin directory or directories
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for `${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
[GOPATH](https://github.com/golang/go/wiki/GOPATH). [GOPATH](https://github.com/golang/go/wiki/GOPATH).
Next, [install Node.js with npm](https://nodejs.org/en/download/) which is
required to build the JavaScript and CSS files. The minimum supported Node.js
version is 10 and the latest LTS version is recommended.
**Note**: When executing make tasks that require external tools, like **Note**: When executing make tasks that require external tools, like
`make misspell-check`, Gitea will automatically download and build these as `make misspell-check`, Gitea will automatically download and build these as
necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory
@@ -75,9 +79,12 @@ git checkout v{{< version >}} # or git checkout pr-xyz
## Build ## Build
Since all required libraries are already bundled in the Gitea source, it's To build from source, the following programs must be present on the system:
possible to build Gitea with no additional downloads apart from Make
<a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a>. - `go` 1.11.0 or higher, see [here](https://golang.org/dl/)
- `node` 10.0.0 or higher with `npm`, see [here](https://nodejs.org/en/download/)
- `make`, see <a href='{{< relref "doc/advanced/make.en-us.md" >}}'>here</a>
Various [make tasks](https://github.com/go-gitea/gitea/blob/master/Makefile) Various [make tasks](https://github.com/go-gitea/gitea/blob/master/Makefile)
are provided to keep the build process as simple as possible. are provided to keep the build process as simple as possible.
@@ -93,11 +100,10 @@ Depending on requirements, the following build tags can be included.
Bundling assets into the binary using the `bindata` build tag can make Bundling assets into the binary using the `bindata` build tag can make
development and testing easier, but is not ideal for a production deployment. development and testing easier, but is not ideal for a production deployment.
To include assets, they must be built separately using the `generate` make To include assets, add the `bindata` tag:
task e.g.:
```bash ```bash
TAGS="bindata" make generate build TAGS="bindata" make build
``` ```
In the default release build of our continuous integration system, the build In the default release build of our continuous integration system, the build
@@ -105,7 +111,7 @@ tags are: `TAGS="bindata sqlite sqlite_unlock_notify"`. The simplest
recommended way to build from source is therefore: recommended way to build from source is therefore:
```bash ```bash
TAGS="bindata sqlite sqlite_unlock_notify" make generate build TAGS="bindata sqlite sqlite_unlock_notify" make build
``` ```
## Test ## Test