From 0cb7784482af41d07dfed84d86be88e31aa40c48 Mon Sep 17 00:00:00 2001 From: Ilya Dobryakov Date: Tue, 22 Oct 2024 15:08:19 +0300 Subject: [PATCH 1/4] mdx + 404 page --- .gitignore | 3 ++- astro.config.mjs | 12 +++++++++--- bun.lockb | Bin 187449 -> 211007 bytes docker-compose.yaml | 5 +++-- entrypoint.sh | 2 +- package.json | 3 ++- 6 files changed, 17 insertions(+), 8 deletions(-) mode change 100755 => 100644 entrypoint.sh diff --git a/.gitignore b/.gitignore index 02311ca..ba27dfc 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ pnpm-debug.log* # jetbrains setting folder .idea/ -md/ + +src/content/md/ diff --git a/astro.config.mjs b/astro.config.mjs index 33b0c50..0013df2 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,13 +1,19 @@ import { defineConfig, sharpImageService } from 'astro/config'; +import mdx from '@astrojs/mdx'; import tailwind from "@astrojs/tailwind"; import astroRehypeRelativeMarkdownLinks from 'astro-rehype-relative-markdown-links'; import { remarkFixIndex } from './plugins/remarkFixIndex.mjs'; // https://astro.build/config export default defineConfig({ - integrations: [tailwind({ - applyBaseStyles: false - })], + integrations: [ + mdx({ + optimize: true + }), + tailwind({ + applyBaseStyles: false + }) + ], image: { service: sharpImageService(), }, diff --git a/bun.lockb b/bun.lockb index cb62195c7ee32779c96967031a824f4d2996c8af..11e4714bab67f47b19fe7f4c3978cd4ab8113e17 100755 GIT binary patch delta 40562 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 Un1CQd(~#2l%8I~T+6uY<2LidaF#rGn delta 26275 zcmeHwcYGDa*Z1y{3t3v|;c|f_bP@>ZH;}-k_g;ih4M`w@kc1>iCl^$tDc~w&5JUtN ze*%J_prAAhR=|QHAY%PlKv91RD)4^4JF_W@KF|BS@8|i;{dn$o&Y3f3X3m_M-JK2N z!SAa+yRXWs$nZ8#UJ1VEKVkjueCzwZwchWrws_xNnM0mw7CG^3jSgExSi<9H42{>j z`sz`Qivo`8HYb0AG|fK=$tu8+$Os0$2&@iFD=5e)NYk|L;A?|F3Oy4zJ9Sz%OUFT8 z1AGgmpO;%uh%(x-3Yu08@{gfY8JLrrlbe;UY4xdB1VMgAL2mYK8QM^nriFm-4WwcR zAS=#HEy$gjqiHKDN<)_dWPV=Oq}i% zw^=9kVE44D(qECN3Q7MQApN|~(v4uVCk)f}2`kJ9(Zj7SMsOdqrtCmrW=0PCco}YG zhkggLy>1{>{C2NU_Zzh|tseLTK#sst3=j1eSR0Mtq8jiG>-!YQ(s`+cnQf#`{Z}C*o&~~!{}8YtaI?Z?K(yGO4@6J=V}Pu- z2au!CPGJKeT&!NH1xlX&52@7eEdRqJCyUwx(sZmEm{Jx*X6lB^S9E2LDJP z8=nv*t>)!t6-=8_pxrhpD?0<$euA7yZZil~e_n(J)q+mXHfv*An z10|o=MSA8ukREvn*Z{Z#gGvv44#ULLK-yW@O*V9HcTH;wegcpoc^UFh;JZC!10o@h zE`p#r5}XpZ_mYNVfNXh|;(G(bzoX5`t_BD!-34NuJ~X2NWG609tCo4{M=JE z@N|D!Urp3o#IZPzmecjG43Iq!9Vi>{0FXD2Wk5#rPUN!zod#=K3t%H4E7pLl;LIRR zYYyBGWKS(%E8rt2$MO#klX@$FtT%T!{LhR$2tq#60t#8zE!imRn?jgJ>v+ z=4l`s>>DXv{|wN!lbTdoT7pq$nx7#;C}|y1{kEv zR{&XHE|9al;TTyk5Xcs1s{G~Q($K&*(v@>^(=}dCj+KU!A?N�#*e!2Xc1J%*;y5 zY@0VNZoDkN+KM(?nx9XQr50PMW=K)Nd{2V|!<1KGA!3g;=z zR5)B=XN7GP)>r5Pvd=%H+F0a2FBASZ6g~%JXSOO_qwo%e`3~l0XV1vfwAZG}Vcr4c zsIFH0EFj}{G>~g{04rWR)9%+8pVk(Qs4IXe#v=2Q7{RPyq3r{xtEXmJJ7|5LLwX5?d} zG`AYIUy;EU=S`j5Ha#m}o0OH4-WFZ_yigA3hgRzFUGZ#uLld@9_F%`AOA3{Y*X<@Z6rb*2_D3|PsUT`i>O{4#0g z1d!vyC%V+^0`0KkhXT21e6>QBPP$t*+Zi`!7263pn~O)~ws6nnzk0+!amKvL?TPH$$>vJu4 zm`~5KQtRUGCsLk+y!K(T@q*2`-S2R9I0fVDBqYd!+5gPoTe=GD(y#Z7#ARqJ#U zpE;lc-jtA2(YnyYtFN|Fn)>wjtYZ8ITc`1xYPp;F^!u$8{8q4voB7P?E=`++5<2VA z-?!Y&eR^#xrMb@>RZ+IUueb(|+^u|OLsQmiSYfTa`gp6jl~3Pfokq?% zGM@rRUsbaE_pRj)_nECQl$04(YBR4s(JBu2=?ARS z$oU>QY?;fVXCtkY2%qk^it)SKI*s42EO#59*#RNZ8CtsS<)v0}8=rpMI*pv_i0VY- zRIoO}|HG}6wmx$OWNeRJo9hC&zSg)FNoE9sqf|G|N{RI8N33G}cCt?6cctZS=hI)Z zQrh{(k`%3asTX@a4!Eu~03il*h#Zio^(@{S26U6^;+XB6k zfK{TmZGmO(14rut^oRMj;woA6ZF_`u4Dw_YOfBIUmFvOvwDZV)4~{j<5s$$gUG|RS zImJqe_33X|#j!rK5>_ncRHBbfA2^PMX7F&6Zv-PaCVV%rS%rqJ98)Lot zOv@ebGoMwmKsz|+*Do{3<`HlVrHWSS+QdMt&SYdXbO*%xr0zy>8QfrIV@$F9jhJZTkseP%V>V%Vxc+iAVPu^My=F1%fFXaTr`;8>|0RA#k? zG8{B}nhXKQN=+*)+-t5>93}<=`Au-F0YeEFRrP`^(NKLR)p?HLmsUoDt*|M`pjbY04Hbcs;2LtH37u+c8TvC$jYovzTsZMy5 z9%`pnAvM@eeO!`?YJsKAmMthry@6DJTUNiNlS(g1?L?|4b4^z(={-zDED+r+cNd>I zL&*@ZExr07s~EDMAY%~Q!>-3z?yf%5-`W`mdj2>#j)P`x4EO5QtkYe6`ccc>&1bH~ zBUCr!z{?oRAHgva;8k$(ZJlL^+&pjt?L1D0*T8Y~uoMhR48%x8Nyh6nA6g1G?PSXZ~Ll7Y#yTe$LZ4VXeMOI2rpZN@Aw2I)t zyw#(fb%1N^t(Lo&&pZNId%F}hegikk*5`_FD~hsX747@YBjC6`VAh~3UxOQ4!u5>R zG%vU+_KaN$E)E>lZLCbsgOl@%4!NfC-~!C_XsA&WcbZv=fr_z5$t(s(_t=Y!{;HMI z*XNps*Pmo-T;C+~aimyb1?xhD*Zde99bwWDu67BGEoiwGA~oFB{|qTEA{fh9uNjV_ zbPE=@wqDm*a2;%|$B^ReF>QCv#frqnp&O{PAY7J7tyW&w0dO7cHmvU@17Eh`DmdvW);a+5W2|G@ zd>q`A60UY1d1J9h#+3zbwAE-`avvW1w|HN{S_POdI-Ui#wo`h7g-G%p&LjB5B35Y@21qRR);24zhzJC=-_zq#gypD(^ zwm=3+I^v}eoc#=AegLktn)MLLnI+r;aI;FdpTWuc=+5VdIabJp zppm7aJs+IZNoo9<@pgL~m$P&cNru(Jhtj8CYSY zbN6QD{lPKv@JJHjb-f6#yESfYav)+X4q`lIVx>z4mk2Jvp6rF-=*d7kAdi4U=g6TI zZBk_GaqC6v^T1&iOHJ2{;6~Zw)DUw39aHOX9=Otxc>x@P1$Ei$=oo2TcI0+&?3Ns- zcfhfnoQh$HPx?(R5E9wrWlYFk*CfN5h@Y}4E$v*Qt@T?V2 zv$#b^Sf?SIf+3}MrR-fRCDW%TS;d(?S8^KqWUbFkaxFuuznwZ|r_N<32c$cqoRZXY zNcFYV0y4PzuxS61)O|9Aq9vkc2pOrCU6R^UlKQLJka0EXPL zNOiZ?Pe~4t35Y%`NwvzdGa<`%Qu;xwILGJuaw?yx*5@R-x@K!yik*58DJlCIsbRLP z&on-TQSVWtvg}k)4xig7%R@@$zKPUiTNam#twcLjjMM}>b)_UVGS4Zo2Pv6bd%Dwt zY@|lAgn1Mx+^R4{VePzTwR|TWHsX<{hvEJQoaGS=x&%SSf>kJNe1U%GV&$k*B zb}~B^I5EKI{yE@cpn@lbmR{F3aQ3YNZ=&uQK9jrN3CNXimYYjBtT(Rj!F94{P~;4G zTaoi38=Rb<_NoMq7BCa$BnETNQR?H6EkFgPm8sk;sw!y3==c!oX&j_U#{ zKp*SRl$!Q4zAFV>C+l3(BvT+2XJVsjlB=x##-KcOjFLo2y#mxl#kA z(XNT$*iZYl*nG4k@50(dD`lR~Y(1~!IRJO@ao`fIbM2G#M=bYzpBXXVxqHI0YbLl! z*16Tm0Z5Fp*3VCJ^<99ftw!^c^u<=n0-t#dJe!Wy5~KYqI94w2J5fb)q|kJ@H4_}W zY`^rF`@k`DWL#VUhqb6>k~!QjpHJnWtpmr-OYRalT9?nk%@&q82G(bQ;}9ZDv9|36 zmtYUtMJ2cE(c4+47y4W?7I76j*Cff@f)p*f?1zst;6{U!j}Gy-%RIYoeX8ZY-Dhrq zOb#1+^c}b;Tc3|EA$Lem;4Rai7zm~Vvg~Iib3eFFb~W&-arF*s?H!%WxI4?NtY(hl z_CMe_9`@^xD}Je_rCaNlB?l~Hd|qv1K$1@_D z6tmo!X?Wd6RVhn-=0?cy1S2EWbrD==hK%0Uaxe3_GFB+wwFN0Gq6ns|NOiSS-S37o z><63$NX1x<3X{wikdn^kLQ?%6=>*JCJcADfmx#LLEo&J#`WJ(Y_vvF+@d}?=d8Krd z{g&+N3C^y`T#b}kknnDO6dVE%ZP8cZ;lobNLrMnwyGV_;Ws$3GhrkbSA;poEArpA7 z3=+J-pyp0i%1WQ>IAnM~#){F#a$1Q83wX)B%BMeOrL6K9S1fDos!lH7eRz(s8r_{7 zfCQeo(T-2;6t5Zg8vsax#SNusX! zPI^Zx#q#M3tYXV&hCHBYc;exbH`(jD4IG{*+a;MVBh?#nMAvMuUfn9b50O$VpA_s! z!S0UxexDh?)>+O{@yak499@oi->jYWacDqMB~8;v^+1h41}Fr?t1Je9Z)!_#jx5(4 zQ~}gV>D>%zr;XBUXMZ06gM@t%bx@STXiBX&p9(ga!1#mP{zz~%br99|MP%hz5bTRc z9&u)0MBVDRI~a?VJ>6_6rd}@h*r9R$YUbg7m;$@A#8asTdHYgF%Ysr zN={_?!D#uWO*M;Hb{L2*9}VJF7U{lmAeI@gZ~~Cm&9EZm8FsEj+Mld=BJE89(HaK#%x|pZAwW91iIO)1vRx5CUN=K#wLv>- zKUTAdQ4^!e^6$l%7tbGstji0Yb#zeqNh+Vn@?C&cfc=%6$Z`V}|2NpzcIrqdQg@Up zKxBnu6kir;c$|`#McumgScpBe6OhZLElpXO1Z0893NwMs&jzxVT!r~SdlCWhpEesm ztZgnCgQx4^LDjjYGWzN&fg4Bzje)#~tT;@`TPTbG(m*>PFCz6~ z6vhLqf$ysFiEL0e#S>X?QC}q3qM<h_ zLZLz?vlU+!sXtB1t-a6Hji$YPrB@ayDpYbJ%grEfU3)ILh>^4iTrjX$Y5gyvJ#+rQ zRLoWF3DtrBKFa$42L(~ve^DX*yiGNT$nn_;WE|`UGVAGN{xVSpsjyEeJO`wq{fd8H z=@D^%IUw)jhm@4a|ib^WIbLedwR} z9>l~y?>+y#_x$tT!&UO1_a55|H+}!%LtWX|8fuo||9S6$gLsGi=e_5D>Aj~D-)H{k z?>)OmANk^8>z&X#qD`UR+f@(4S6S3tgTM8t5f&h}7V3W2Fub5tr!1JVYR*5$y#jF+ zidTw{Eq!14pHU)xmVU@J9@{T9s58ti8d698Yl+rCTl~kO`0x~HS3G#09_ad{@tMC4Xqx-?K}^sHOTgJwUjY=`-uT zdaJ#Y?B|@%D3~}SD?43_+Piw0eqPsi?w!6upRBvCPsjWEUwL7xi&G(9bXl!;a|PgS z#dc%aPM;{$ej@mi zEywk;l5y9Q8%6BkE4B>lId^)GDaB(-k(H`VR(s!@2Dxj~8pP{0rN{m9P*w5kO2$2R z?i;ZIZ$L)V+@;J#f_C3hdbN?BDDNlOic>;N9IYt~((nl-tBW*0snPIBCFABr9*Ec5 zkg*c(<#HE@Hk>{A`bf8CCNA#J<3HPb`9Rtz;wC+X4L}GY`+6S&mhpgQNRf70=`{q8 zzpJsY4`?c7%2DV*vh((?Y?_2GQ`xN-+%SIZAdx z$wJvpTw71;BB+WHCiWOcXcKM#-2!5G4g?JX4F(MXaqDQmCL${sP4pMVfC@%Z>vv$_ zT@WMk6zF{rBk?roL(mz}Siz}EE1;)9&w%!V?gp(C?f_#@ z7^9bw$w*|BF{n7$97m2@ZLu`K2x-oJsWG6jpmCrHAZ{VG1kpRg!B-NiT}IQ6HIb|h zssqwN2B-ok0K|RM)1VJQ+;F@B`Wf^K=nCjdanWUjn0y=l0_-ADx1uqoC`RwFYfR)(+4UpjZ(1+1i34LBm9&N`|MX50ZUB{Xuac&f%_bVmDBCP#+NI za61sUJCi}3K(U~PAnumG3F01c7nTJTAk7`-M5Ot2cn9!VU=(F&Rs+z3NUt+AF(J@s zpOFJ54>TP#2{air0dy;9G$=+8JD}%4-B3k$P!CW~ zP;XElP+w3#5Wme1fZkxx5Kvc;7u4QB72vh@96I2US8&n7Ml`h_@WHfLsh5_8i zOtg0>lEXlmpe)c7P&#NA+7t!iGB+KR1IhsLk0e^6AFV(=k?sKE2M2yDIRNU9vI9W3 zAkC#O9OMCUA^8O4Lb?*@8q(MK5%mTV{D{gArW-+9KzSf8hg|+$P zyzPPB)1bYeeIVX4x%SQg-3Gb~x>G?@Ky$z!L>aDhp`g03aoxZjpd%RGmUe^sA>9<@ zL*|d*^Fb#-yn9455Au1y`5@*^19H)yOCEF^h-+~hwC5| zn`gH@n$;Z>T|!~zLvgvls3USi4VQjN%m_sp=YX3{Q*N6v`}&whC=(MIjaF*C#W|K4 zDt-w?O)Er17}TBfYbvk5@ZlYmK8=;?>~oO7=`jQJwcZ$8Dy1f^N95{h)SRn33QGKa+ ztOdGJL!4=W0smCAZi%)$URVCx>7!y?OVsZi+>>(fl55>Z7hAyyhXZl)mRJo1eYALj zdd@*UTW4R-jeXeDC4kO~rqh2E=c!Pyz6_8nzs}7(GU~o9hJFJRopZf~c(b+P9@GO0 z46*c-qemVJde~*?QIMcDC1?4Jc<0+@b8>5>pbd$#i+RwXXQL}${wBOCNP*sb-ED?7z%S zOFq;cRkW9jmUCWF%F78uzwUeWTjXGNaWIDnPdHj94=BP(OP8Pi;EeBpj6y_foK_?T zQNcO5=+-`IRhldvL070iu@!>F+HfO5-!4u<8E@#{u#9u6(4{3y&Ib0Hz9>M)42b1q zJSRdT5Pj+#B7eV`dfy>Go~==;;0l$4cjQW&D^DJ~_(*9^12GLnJ?)@?`-Ok*w-djw zdi&#L6ncn_P|(MS{nX2c9tPFl&~tV9=dnSjN)0U&-%)R~SlJeOhoFbMq5r+7GFQFu z;8&djbVfTSigs3XYy*X>P{5mnzjw~&?$@UVoGVob7So}i$BSw-G(60{rTW7Hf*w9U zeAg$XdWGU3^(6d_o;0LOvwu^sYS>@5Tz1X)xuy75TP&0^&OFX3PS3eEZVq_$v0WHR zEH{jWS47Q7G%#O806fm=PCw_YSyZR;qfPCY!I*Oam=KAXzg&dHK)qOOXQ|EN6$*EY zkVL~R>a;WB;+=yNDi37V^YPH1t zcCZ#JrcX11Dp>yH$^|xO-l6ViSG5&D3h!W@H&_w6Voy3bBipN#DtEOFDOf1?s zP_&JQYn)@Wsvb)`89KV+ZbN6sF{)awNQHvFM9hsh9@Ni?q67?3R08f2Uxr(uDFoO$kQ8(_KEO!f|y45x7f&V%xiB1h`hx{Jtfe)iId%7 zS!O#hO!!9sh0x=iHnzJ(aNQLTrfoyLTzpZlvZ1P16;|zF4Akd~F&&J_#_w_B)+D38 zUPsg%Vbp7kHN`nz?CUKLCu}>@DcHbb6JsyOZA8r^G@+-6AWRUuk`4DC3IB_fs^i3EfU}RU~ikK(i!oiMzyk7-35B}#5h8Ep(-p@JRfwH z%fhKO->q2jQq9Y#nUe$E{!9dQfyJ_>O1OFAi86UAqEu}!iMCx)>3PwsYe_&m-Q6Lc zWL|k!%25&Zx*2i0^6o;haVYd;cf|wU&_R`>>bfi@^oI4C!h>nyan5Y(`NX2^yJo%2 z=XKSINHK^C&Z%z&FD?4=sVDn##ZZGgR~+n#n#%iE%{C>JW28${j;7rJxBjk})}y4j z@pDh{NDth(RO<|(4?(6!oF52KW@1FUKHz$b>8w|^@2|&SwJ%FV4~DvoH2rq5i#EzO zI#ySP%L>b@xE&Q0MXEuHlWq1m$I}h$+a=sT@b$H&p88m9?~O`jZ#>Sib}hbM+;DGb z#VVzG)x~erE7#q4=TyAcH@NmqsD96jrRvVPd7G!Fcdb@*a%*W$`L5rj&n1ybY^o1_c%xYJ=WSYZr6J$@}_D})(3=d0BTb6;jhD8EkTbCD4kLAF5+>H z2RvMH(Xys>zJ9QD9QKPK#BaQFp5VSZ4Yvn3*xI91f&Wma5${~Rf~)> znaT%`n!#$?sen`=p@e0PxplR0br2^x^Han(0FQH^V&#gHwh#L1_d})KUm-%U&Uu`p z7_0jijDPa{cy6R9|HxQSks&S(#jvR={+#2%36AzVrFs8 zVSlPZbz4TK=sX-xHO^6x9ox)&Y16g+WolB+k;)$DkhOa@J~iUn{Np3gBK7p6qVBIB zQ`9|Tjffb5si8QZm|ccb_X2q<*6$I&;g0OtG!l1g#9E~X-;CLG*R# ziM$KnNYU4XX;}V}$5G63XQt8*IIjhN;J>7v?~(j%dV352-E&kAkSNm`agd zrsO$gA9KppNc5lE|=mDv6gn~uCaTu_sV7aRi zyr#|UbK9?dU8iI*%@;*bh`$30wV;soZ1UE)iqpQ}D{)LTU(461oG;fD{;<*a^ZwGD zt>R7EeoiSQ^nc@-jrZ=EQ>yTW(8r_Y=YTPVA1p6(~guXv{5bZBmN*i6O;2c6aw9|=*hK*`IR+{sv zn1-UBt0>CdhbMYwjm!77Tvw_PBsM}pZ!Y!&jGwZ^sR>3*ygo&qWw^giy;|c|7B33W zPS1YpN263>hL{co{XVgrdd_j8 z%U51ox3_7{uS@mb69=IXe+6ye2F4d%ng{-;TlW`B6`UhVy)CyV#{71oXK7A?sFn)b z&Y7meKRUSauAde*C{>sxxb)jbQsIw*U#DdKQgi1i zagO%vcgA2*eWKCOnbDb|$3$$GI;WXF^39xx!m&Tzg&ECvMFj7+V*5n6{MQ0;Y@)L* zTu;Lvb@B2O)dI{L? z!<+3uaU%^cHO?8N+M*Y>9_yLUoqVVIPS#>I=O{gMs^b?5m?EQEq_ zZKhb4j&B0aF{n95NB95b@fKWGxg&?FeiX-{81I~6-l)liriaWX&qBc~_a1Mu&Bsj@ zMAJyoCeT(>A}y%Rm^kg22%7}{tVjYFzswVdrs2KTEpjO>*|I4Tn3#Svi|_g+ru$E(p%h9=iDvbDZ1pq z;4NZI4gzw$t9vhA_0^G*cAn{QSCf6kK3yYO&KfV!g zq#CBKl6RHd1y+yKkA=Tk>Pu&8N?-luP~m%S8E2MvtvlX1Aot~lwXd)LDyV*``OT~4 zt>l|0GPXSQ_J(IlbB>7I0;4Xzvqou0g~-E#?Hs!sdvDsD!|NZ$H`$_l<%EAg+{l9~ zoO62j)_>{ji4)g9gE2;KbfWgGh@Ec4CVUL9R7T|f`Fp1GcW1c|91mKsq`#=4H?{0P ze!>5M!FJ!@eAiH6{?}2g;vrfz%10}m!+UeCw!bo9%1{ql85fzr`Sq?C0tNjuF%=Lu zQkS2lUfeOWYc0L|Ttm0N(O_y%LO1x}*7wS**{<(44X>eJ5%!4U}c9OOUSv)@ke$;KW8cl@6{Uwy6gynWCx zs_J!UyqH@zBH!*zES3PRg?PRIy}hZ+?eBK>x8vB#`+NqvgFiIrEEX*_xoCUr+z;=c*vtE;91G1g^RLkr1v?K2A)ry lTc(a#KB-rihX3v?8@cg}A>LVLbllr;xv_DrIBDq*{2!+#^RNH_ diff --git a/docker-compose.yaml b/docker-compose.yaml index 871252c..c9b4efb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,12 +1,13 @@ services: markdown_viewer: + platform: "linux/amd64" build: context: . restart: "no" environment: TITLE: "Markdown Viewer" volumes: - - ./md:/app/src/content/md:ro + - ./public/favicon.svg:/app/public/favicon.svg + - ./src/content/md/:/app/src/content/md:ro ports: - "8080:80" - platform: "linux/amd64" diff --git a/entrypoint.sh b/entrypoint.sh old mode 100755 new mode 100644 index a22dcd7..042d18e --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,2 +1,2 @@ #!/bin/sh -bun run build && /static-web-server --index-files="index.html" --root /app/dist +bun run build && /static-web-server --index-files="index.html" --page404="404.html" --root /app/dist diff --git a/package.json b/package.json index cd10f81..359a463 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,11 @@ "astro": "astro" }, "dependencies": { + "@astrojs/mdx": "^3.1.8", "@astrojs/tailwind": "^5.1.0", "@tailwindcss/typography": "^0.5.14", "@types/node": "^22.5.0", - "astro": "^4.14.5", + "astro": "^4.16.6", "astro-rehype-relative-markdown-links": "^0.15.0", "sharp": "^0.33.5", "tailwindcss": "^3.4.10" From 6ab210a8761563cc3327811cf8ccb3595327bf97 Mon Sep 17 00:00:00 2001 From: Ilya Dobryakov Date: Tue, 22 Oct 2024 15:59:11 +0300 Subject: [PATCH 2/4] fix mdx + disable telemetry --- Dockerfile | 2 ++ astro.config.mjs | 6 ++++++ entrypoint.sh | 0 3 files changed, 8 insertions(+) mode change 100644 => 100755 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 1fb777d..1709b7e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,4 +7,6 @@ COPY package*.json bun.lockb ./ RUN bun install COPY . . +RUN bun astro telemetry disable + ENTRYPOINT ["/app/entrypoint.sh"] diff --git a/astro.config.mjs b/astro.config.mjs index 0013df2..094e88e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -23,5 +23,11 @@ export default defineConfig({ collectionPathMode: "root" }]], remarkPlugins: [remarkFixIndex] + }, + mdx: { + rehypePlugins: [[astroRehypeRelativeMarkdownLinks, { + contentPath: "src/content/md", + collectionPathMode: "root" + }]], } }); \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh old mode 100644 new mode 100755 From 259e9fe1d614ccf334a0a1ade5c819ae1a92692d Mon Sep 17 00:00:00 2001 From: Ilya Dobryakov Date: Wed, 23 Oct 2024 01:25:01 +0300 Subject: [PATCH 3/4] fix links in mdx --- astro.config.mjs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 094e88e..890f444 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -25,9 +25,6 @@ export default defineConfig({ remarkPlugins: [remarkFixIndex] }, mdx: { - rehypePlugins: [[astroRehypeRelativeMarkdownLinks, { - contentPath: "src/content/md", - collectionPathMode: "root" - }]], + remarkPlugins: [remarkFixIndex] } }); \ No newline at end of file From 9cff650e8251c0dfb8b3855383fdd8604511cf41 Mon Sep 17 00:00:00 2001 From: Ilya Dobryakov Date: Wed, 23 Oct 2024 01:33:28 +0300 Subject: [PATCH 4/4] remove all mdx plugins --- astro.config.mjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 890f444..0013df2 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -23,8 +23,5 @@ export default defineConfig({ collectionPathMode: "root" }]], remarkPlugins: [remarkFixIndex] - }, - mdx: { - remarkPlugins: [remarkFixIndex] } }); \ No newline at end of file