From 41ca799eba840534f4781928770d7fed3492877f Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Wed, 30 Sep 2020 15:00:57 +0200 Subject: [PATCH] Add watcher for better builds Fixes #137. --- Gruntfile.js | 36 +++++++++++++++++++++++++++++++----- README.md | 2 ++ package-lock.json | Bin 320133 -> 329068 bytes package.json | 5 ++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 4d15878..22ccbd9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -7,18 +7,23 @@ module.exports = grunt => { default: [".nyc_output/", "dist/"] }, copy: { - images: { - files: [{expand: true, cwd: "src/main/", src: ["**/*.png", "**/*.ico"], dest: "dist/"}] + css: { + files: [{expand: true, cwd: "src/main/", src: "**/*.css", dest: "dist/"}] }, html: { files: [{expand: true, cwd: "src/main/", src: "**/*.html", dest: "dist/"}] }, - css: { - files: [{expand: true, cwd: "src/main/", src: "**/*.css", dest: "dist/"}] + images: { + files: [{expand: true, cwd: "src/main/", src: ["**/*.png", "**/*.ico"], dest: "dist/"}] }, pwa: { files: [{expand: true, cwd: "src/main/", src: ["manifest.json", "sw.js"], dest: "dist/"}] - } + }, + }, + focus: { + dev: { + include: ["css", "html", "link", "ts"], + }, }, replace: { dev: { @@ -42,6 +47,24 @@ module.exports = grunt => { overwrite: true } }, + watch: { + css: { + files: ["src/main/**/*.css"], + tasks: ["copy:css"], + }, + html: { + files: ["src/main/**/*.html"], + tasks: ["copy:html"], + }, + link: { + files: ["node_modules/@fwdekker/*/dist/**"], + tasks: ["webpack:dev", "replace:dev"], + }, + ts: { + files: ["src/main/**/*.ts"], + tasks: ["webpack:dev", "replace:dev"], + }, + }, webpack: { options: { entry: "./src/main/js/Main.ts", @@ -74,6 +97,8 @@ module.exports = grunt => { grunt.loadNpmTasks("grunt-contrib-clean"); grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-focus"); grunt.loadNpmTasks("grunt-text-replace"); grunt.loadNpmTasks("grunt-webpack"); @@ -90,6 +115,7 @@ module.exports = grunt => { // Post "replace:dev" ]); + grunt.registerTask("dev:server", ["dev", "focus:dev"]); grunt.registerTask("deploy", [ // Pre "clean", diff --git a/README.md b/README.md index 7a1b959..a5f52f2 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ $> npm ci ```shell script # Build the application in `dist/` for development $> npm run dev +# Same as above, but automatically rerun it whenever files are changed +$> npm run dev:server # Build the application in `dist/` for deployment $> npm run deploy # Remove build files diff --git a/package-lock.json b/package-lock.json index 88ecec2f76be43888c9a369d225578f46de28fc7..c738b0fdbbd8f948605069dd73c19a5e45dcc198 100644 GIT binary patch delta 3391 zcmZWrd5qlT6_=0QY_82N%O+uyY&HQ(lG&ND=bkiy%zf|NCn>}pd+xEvV|zTFKj=mX zh!BN5L{N!x)-#(WNB^?l`|R)g zz4yKM`@IKVo%+|qHy_0jn+`u=`pfepRfeiE0Iwk1mDJIFQ{>Pt^Lnj*U5x;iwKuJiY`z}Gy;vp8YA^@gG)Xo)%8d+7I#padM$2WlYTj)6W;4OG=s@kBnV!NspSZ#|CDm(Yi z?F5Hw@Rah>-!`5ceIW?LECtRSglEAwPWWa8bM9JCvXnf4t3I@5F!>s^XT}_6BW9Cti6z|zmJzCqNRaAzMWR>%jS#whgl@OlHhBIdG&|NN zB<)~Ju=p-C3ts#kJhHmRvy6(W&4YdSBl?rkmu{a!NLf%0zkDl*t$}UpRD&L7PJM#M zUqUq7aP2~t5iDUAi)1wIW--DlYv>BZI z0=@~54?!B~P$Sx>Fgqryi5b4x^KzjEx8$m0gskO~!3biD`K) zJ}N^;!|sKq95yYOon;$V=upaq4};*_?Z~PLfo`@Mgg_6j{60))0FH6!d;P*e=%{@i zA=6rkCV944rxnMyvk0cc!QnTdy*om6DQ;D=DnmQ=mosl`(zp;L`JaHpOW zIx-&jGu=*Hxe)W;va-3LrP|dF-5!9rb3djtFQfS6NyrS3tyCt6&!IcP*?XaVx0Y_G z*8zYVTmU!1x-?c0G`ulv&6IGmDrE}>JK;!FGx>1WT8;P^Pr7068jU5=sjnGp2^%iz zqlPfag*474?s6v=+@XvR)aPqb-kM5N=471?$HU6ut%Lr#t-s|d=%YJeqNm_TW5LJ+FVJ!AuyzJW%;V;?|cTO>j#RtEWPi;SQhG-bO= zYKLBhdq|g-eG*;Y!3`dlEeMyuc;1q* zv38R)7Q(8AbR|``dlw9NC8=rJItg3H-pQ5dVYa~!FF@nKH33hfgUeO$_h!`~Cx_9k zQfWliHrfE^(aqqo2T&teya26I{s6|ol7wvR&wdCkL1>9Bihy_%x*MGSH#9OiFbAx) z9E)lx(383?gbgc6l8+DM3;t@c*vm#kBFC{khK>X1421W;`ULu=dDVap>9!V}I0H`| z`zta5KKlZi0N84H_naWKhHR-W*9QAnu5)NHg%jt~Y|9n3JCa=4oRtmU1=i}o_^xcl zWgkh_gTY*wDn~+?DOHqPlD*b8M9NuG7D*D*WT~dR>0`X5M$}qLkQ_-=D;2$G!QDux zy0T4K@=k-#A4Mh=^N|^F^b&$9>q<7Tv;#)_>*wIRC=5n_yhNe(4$zHl9Iq+yfZ^KhnW4IiW zEAFDF#wU5sn=P<4zYpsWdP?+Bnyk$7c`Ka@yVBLYS7^( z0DT7UT}Lo#1{s3UsxE+k3U5^Arl!+XKI<=MYK*s5F?0>G7}N_jV~~_szi3Rm3{=kS z)7xyWrokjTEqS(;DR(>0DCy2y8FM#l@pPNsO0bpm#5r%Q!`XX8u4oIcunO3G3SI|} z{~lgWUw`7C@LNxfF3aLTg6F_jw?KQRR)kW;xAF?2GteGY`~2~sEu?1?1mA52tTJnJ zIIA2AYU~!YWf`5a|TyX-&gQ!+LE-wb$9go*Q`Xp8^$)1SQ(Dr*HaZM`@o~58%|J_C8 zpk{1E#ue!N-A}weGP7dy1B&8_60Mf&vd}Bs`T4E5HpUd>Sglqv5*}N#i?vwVsn?6i zo(l)(+$ymgc?ek#{I{Yr-!X-{ZT}~~LjK_&T~;-4A%<)}_6UrE@#hfRAb?dfD|$CL zRAmpQtX=Vdd!Iw*XX34hn9Z|zSgo^wDD?_8mTGZA zMl6-{wY-4YdUC-bEl5(vSu@ zN;!}cvS8AHl3?!dupcbF1CR7|@4@fQwCZtEwU6z^{S#UK7&QAFqq_s#}d#ZACTObd;m1Sil!8@$Lp|#M28>o^*L5 zNg`@*+I@PgL| zJp_