add make dist task && separate assets build from binary build

This commit is contained in:
Danny 2018-05-29 14:52:34 +02:00
parent 2aac3d211f
commit 32693be2b0
31 changed files with 1205 additions and 1197 deletions

3
.gitignore vendored
View File

@ -5,3 +5,6 @@ build
fathom.db
fathom
!cmd/fathom
assets/build
assets/dist

View File

@ -3,7 +3,7 @@ EXECUTABLE := fathom
LDFLAGS += -extldflags "-static"
MAIN_PKG := ./cmd/fathom
PACKAGES ?= $(shell go list ./... | grep -v /vendor/)
JS_SOURCES ?= $(shell find assets/. -name "*.js" -type f)
JS_SOURCES ?= $(shell find assets/src/. -name "*.js" -type f)
SOURCES ?= $(shell find . -name "*.go" -type f)
ENV ?= $(shell export $(cat .env | xargs))
@ -12,19 +12,30 @@ all: build
.PHONY: install
install: $(wildcard *.go)
packr install -v -ldflags '-w $(LDFLAGS)' $(MAIN_PKG)
$(GOPATH)/bin/packr install -v -ldflags '-w $(LDFLAGS)' $(MAIN_PKG)
.PHONY: build
build: $(EXECUTABLE)
$(EXECUTABLE): $(SOURCES) $(JS_SOURCES)
$(EXECUTABLE): $(SOURCES) assets/build $(GOPATH)/bin/packr
$(GOPATH)/bin/packr build -v -ldflags '-w $(LDFLAGS)' -o $@ $(MAIN_PKG)
dist: assets/dist build/fathom-linux-amd64
build/fathom-linux-amd64: $(GOPATH)/bin/packr
GOOS=linux GOARCH=amd64 $(GOPATH)/bin/packr build -v -ldflags '-w $(LDFLAGS)' -o $@ $(MAIN_PKG)
$(GOPATH)/bin/packr:
GOBIN=$(GOPATH)/bin go get github.com/gobuffalo/packr/...
assets/build: $(JS_SOURCES)
if [ ! -d "node_modules" ]; then npm install; fi
gulp
assets/dist: $(JS_SOURCES)
if [ ! -d "node_modules" ]; then npm install; fi
NODE_ENV=production gulp
packr build -v -ldflags '-w $(LDFLAGS)' -o $@ $(MAIN_PKG)
.PHONY: docker
docker:
docker build -t metalmatze/ana:latest .
.PHONY: clean
clean:

View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

View File

Before

Width:  |  Height:  |  Size: 998 B

After

Width:  |  Height:  |  Size: 998 B

View File

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -12,65 +12,59 @@ const uglify = require('gulp-uglify')
const pump = require('pump')
const es = require('event-stream');
const debug = process.env.NODE_ENV !== 'production';
let defaultTasks = [ 'browserify', 'sass', 'html', 'img' ] ;
if( ! debug ) {
defaultTasks.push( 'minify' );
}
gulp.task('default', defaultTasks);
gulp.task('browserify', function () {
let files = [
'./assets/js/script.js',
'./assets/js/tracker.js',
'./assets/src/js/script.js',
'./assets/src/js/tracker.js',
];
var tasks = files.map(function(entry) {
return browserify({
entries: entry,
debug: debug
})
.transform("babelify", {
presets: ["es2015"],
plugins: [
"transform-decorators-legacy",
["transform-react-jsx", { "pragma":"h" } ]
]
})
.bundle()
.pipe(source(entry.split('/').pop()))
.pipe(gulp.dest('./build/js/'))
});
// create a merged stream
return es.merge.apply(null, tasks);
});
let stream = browserify({
entries: entry,
debug: debug
})
.transform("babelify", {
presets: ["es2015"],
plugins: [
"transform-decorators-legacy",
["transform-react-jsx", { "pragma":"h" } ]
]
})
.bundle()
.pipe(source(entry.split('/').pop()))
gulp.task('minify', function(cb) {
pump([
gulp.src('./build/js/*.js'),
uglify().on('error', gutil.log),
gulp.dest('./build/js/')
], cb)
if(!debug) {
stream.pipe(buffer()).pipe(uglify())
}
return stream.pipe(gulp.dest(`./assets/build/js`))
});
// create a merged stream
return es.merge.apply(null, tasks);
});
gulp.task('img', function() {
return gulp.src('./assets/img/**/*')
.pipe(gulp.dest('./build/img'))
return gulp.src('./assets/src/img/**/*')
.pipe(gulp.dest(`./assets/build/img`))
});
gulp.task('html', function() {
return gulp.src('./assets/**/*.html')
.pipe(gulp.dest('./build'))
return gulp.src('./assets/src/**/*.html')
.pipe(gulp.dest(`./assets/build/`))
});
gulp.task('sass', function () {
var files = './assets/sass/[^_]*.scss';
var files = './assets/src/sass/[^_]*.scss';
return gulp.src(files)
.pipe(sass())
.on('error', gutil.log)
.pipe(rename({ extname: '.css' }))
.pipe(gulp.dest('./build/css'))
.pipe(gulp.dest(`./assets/build/css`))
});
gulp.task('watch', ['default'], function() {

2304
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@ func (api *API) Routes() *mux.Router {
r.Handle("/api/stats/referrers/pageviews", api.Authorize(HandlerFunc(api.GetReferrerStatsPageviewsHandler))).Methods(http.MethodGet)
// static assets & 404 handler
box := packr.NewBox("./../../build")
box := packr.NewBox("./../../assets/build")
r.Path("/tracker.js").Handler(serveFileHandler(&box, "js/tracker.js"))
r.Path("/").Handler(serveFileHandler(&box, "index.html"))
r.PathPrefix("/assets").Handler(http.StripPrefix("/assets", http.FileServer(box)))