forked from riot/riot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
159 lines (123 loc) · 3.94 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# if no "v" var given, default to package version
v ?= $(shell node -pe "require('./package.json').version")
# expand variable (so we can use it on branches w/o package.json)
VERSION := $(v)
# get x.x.* part of the version number
MINOR_VERSION = `echo $(VERSION) | sed 's/\.[^.]*$$//'`
# Command line paths
KARMA = ./node_modules/karma/bin/karma
ESLINT = ./node_modules/eslint/bin/eslint.js
MOCHA = ./node_modules/mocha/bin/_mocha
SMASH = ./node_modules/.bin/smash
ROLLUP = ./node_modules/.bin/rollup
UGLIFY = ./node_modules/uglify-js/bin/uglifyjs
COVERALLS = ./node_modules/coveralls/bin/coveralls.js
RIOT_CLI = ./node_modules/.bin/riot
CHOKIDAR = ./node_modules/.bin/chokidar
# folders
DIST = dist/riot/
LIB = lib/
CONFIG = config/
GENERATED_FILES = riot.js riot+compiler.js
test: eslint test-mocha test-karma
eslint:
# check code style
@ $(ESLINT) -c ./.eslintrc.json lib test
test-mocha:
RIOT=../../dist/riot/riot.js $(MOCHA) -- test/specs/server
tags:
@ $(RIOT_CLI) --silent test/tag dist/tags.js
test-karma:
# Test riot+compiler.js
@ TEST_FOLDER=browser/compiler $(KARMA) start test/karma.conf.js
# Test only riot.js and generate the coverage
@ TEST_FOLDER=browser/riot $(KARMA) start test/karma.conf.js
test-coveralls:
@ RIOT_COV=1 cat ./coverage/report-lcov/lcov.info | $(COVERALLS)
test-sauce:
# run the riot tests on saucelabs
@ SAUCELABS=1 make test-karma
test-chrome:
@ DEBUG=1 TEST_FOLDER=browser/riot ${KARMA} start test/karma.conf.js --browsers=Chrome --no-single-run --watch
compare:
# compare the current release with the previous one
du -h riot.min.js riot+compiler.min.js
du -h dist/riot/riot.min.js dist/riot/riot+compiler.min.js
raw:
# build riot
@ mkdir -p $(DIST)
# Default builds UMD
@ $(ROLLUP) lib/riot.js --config $(CONFIG)rollup.config.js > $(DIST)riot.js
@ $(ROLLUP) lib/riot+compiler.js --config $(CONFIG)rollup.config.js > $(DIST)riot+compiler.js
# Chrome Security Policy build
@ $(ROLLUP) lib/riot.js --config $(CONFIG)rollup.config.csp.js > $(DIST)riot.csp.js
clean:
# clean $(DIST)
@ rm -rf $(DIST)
riot: clean raw test
min:
# minify riot
@ for f in $(GENERATED_FILES); do \
$(UGLIFY) $(DIST)$$f \
--comments \
--toplevel \
--mangle \
--compress \
-o $(DIST)$${f%.*}.min.js; \
done
perf: riot
# run the performance tests
@ node test/performance/benchmarks ../riot.2.6.1 --expose-gc
@ node test/performance/benchmarks ../../../riot --expose-gc
@ node test/performance/benchmarks ../../../dist/riot/riot --expose-gc
perf-leaks: riot
# detect memory leaks
@ node --expose-gc test/performance/memory
watch:
# watch and rebuild riot and its testswatch:
@ $(CHOKIDAR) lib -c 'make raw & make tags'
build:
# generate riot.js & riot.min.js
@ make min
@ cp dist/riot/* .
# write version in riot.js
@ sed -i '' 's/WIP/v$(VERSION)/g' riot*.js
bump:
# grab all latest changes to master
# (if there's any uncommited changes, it will stop here)
# bump version in *.json files
@ sed -i '' 's/\("version": "\)[^"]*/\1'$(VERSION)'/' *.json
@ make build
@ git status --short
bump-undo:
# remove all uncommited changes
@ git reset --hard
version:
# @ git checkout master
# create version commit
@ git status --short
@ git add --all
@ git commit -am "$(VERSION)"
@ git log --oneline -2
# create version tag
@ git tag -a 'v'$(VERSION) -m $(VERSION)
@ git describe
version-undo:
# remove the version tag
@ git tag -d 'v'$(VERSION)
@ git describe
# remove the version commit
@ git reset `git rev-parse :/$(VERSION)`
@ git reset HEAD^
@ git log --oneline -2
release: bump version
release-undo:
make version-undo
make bump-undo
publish:
# push new version to npm and github
# (github tag will also trigger an update in bower, component, cdnjs, etc)
@ npm publish
@ git push origin master
@ git push origin master --tags
.PHONY: test min eslint test-mocha test-compiler test-coveralls test-sauce compare raw riot perf watch tags perf-leaks build bump bump-undo version version-undo release-undo publish