mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	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:
		@@ -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](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.
 | 
			
		||||
<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:
 | 
			
		||||
 | 
			
		||||
```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.
 | 
			
		||||
@@ -136,19 +140,17 @@ You should run revive, vet and spell-check on the code with:
 | 
			
		||||
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 `public/less`, and then run the linter and build the CSS files via:
 | 
			
		||||
Edit files in `web_src/less` and run the linter and build the CSS files via:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
```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
 | 
			
		||||
 
 | 
			
		||||
@@ -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](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
 | 
			
		||||
`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
 | 
			
		||||
@@ -75,9 +79,12 @@ git checkout v{{< version >}}  # or git checkout pr-xyz
 | 
			
		||||
 | 
			
		||||
## Build
 | 
			
		||||
 | 
			
		||||
Since all required libraries are already bundled in the Gitea source, it's
 | 
			
		||||
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>.
 | 
			
		||||
To build from source, the following programs must be present on the system:
 | 
			
		||||
 | 
			
		||||
- `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)
 | 
			
		||||
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
 | 
			
		||||
development and testing easier, but is not ideal for a production deployment.
 | 
			
		||||
To include assets, they must be built separately using the `generate` make
 | 
			
		||||
task e.g.:
 | 
			
		||||
To include assets, add the `bindata` tag:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
TAGS="bindata" make generate build
 | 
			
		||||
TAGS="bindata" make 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:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
TAGS="bindata sqlite sqlite_unlock_notify" make generate build
 | 
			
		||||
TAGS="bindata sqlite sqlite_unlock_notify" make build
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Test
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user