From 335e76446ca402be059717e9ced8d24eeb301a59 Mon Sep 17 00:00:00 2001 From: liuyi Date: Fri, 1 Aug 2025 15:19:12 +0800 Subject: [PATCH 1/4] build: support pnpm@6.35.1 --- .github/workflows/CI.yml | 6 +++--- package.json | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b75fce2..a8fe11e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -2,9 +2,9 @@ name: CI on: push: - branches: "master" + branches: ["master"] pull_request: - branches: "*" + branches: ["*"] jobs: setup: @@ -16,7 +16,7 @@ jobs: - name: "Set pnpm" uses: pnpm/action-setup@v4.0.0 with: - version: 6.32.20 + version: 6.35.1 - name: Setup node uses: actions/setup-node@v3 diff --git a/package.json b/package.json index b7f2ffc..c214d73 100644 --- a/package.json +++ b/package.json @@ -49,5 +49,6 @@ "commitizen": { "path": "./node_modules/cz-conventional-changelog" } - } + }, + "packageManager": "pnpm@6.35.1" } From 78f812e203c02dbd04ae5582a99aa53c2c7c1733 Mon Sep 17 00:00:00 2001 From: liuyi Date: Fri, 1 Aug 2025 15:43:17 +0800 Subject: [PATCH 2/4] feat: support jump to dtstack.com --- src/components/navHeader.tsx | 13 ++++++++----- src/pages/about/index.tsx | 4 +++- src/styles/article.module.scss | 2 -- src/styles/navHeader.module.scss | 3 +-- static/Home/dtstack_logo.png | Bin 0 -> 12086 bytes 5 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 static/Home/dtstack_logo.png diff --git a/src/components/navHeader.tsx b/src/components/navHeader.tsx index 8607a12..75ccea3 100644 --- a/src/components/navHeader.tsx +++ b/src/components/navHeader.tsx @@ -42,12 +42,15 @@ function NavHeader(props: IProps) { } return (
- -
- +
+ + + + + {/* */}

袋鼠云数栈UED团队

-
- + +
{ (H5 || isShow) && renderNavgitor()}
diff --git a/src/pages/about/index.tsx b/src/pages/about/index.tsx index bdf1f03..1e64b84 100644 --- a/src/pages/about/index.tsx +++ b/src/pages/about/index.tsx @@ -34,7 +34,9 @@ function Index() {
-
相关链接: 袋鼠云
+
相关链接: + 袋鼠云 +
{AboutDoc.footer}
diff --git a/src/styles/article.module.scss b/src/styles/article.module.scss index bca1b7b..6843fa0 100644 --- a/src/styles/article.module.scss +++ b/src/styles/article.module.scss @@ -65,7 +65,6 @@ color: #3D446E; .title { font-size: 16px; - font-family: MiSans-Medium, MiSans; font-weight: 500; line-height: 22px; width: 100%; @@ -95,7 +94,6 @@ padding: 20px; .title { font-size: 16px; - font-family: MiSans-Medium, MiSans; font-weight: 500; line-height: 22px; width: 100%; diff --git a/src/styles/navHeader.module.scss b/src/styles/navHeader.module.scss index 9700ff9..dfb451d 100644 --- a/src/styles/navHeader.module.scss +++ b/src/styles/navHeader.module.scss @@ -9,10 +9,9 @@ align-items: center; .subtitle { - margin-left: 17px; + margin-left: 30px; margin-bottom: 0px; font-size: 20px; - font-family: MiSans-Medium, MiSans; font-weight: 500; color: #3D446E; } diff --git a/static/Home/dtstack_logo.png b/static/Home/dtstack_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a446b1e054bd20ac32c83cf799f74b942e7e1205 GIT binary patch literal 12086 zcmZ{KcQ_nh^fwl(4np+NBWfa1B1?2Z^iHBCgdnUkdURF^L4pX;Bf1qOTC`OXJ=*Fm zg6yh^DA9iVeSiPG@AKZ>=ggTiXYM(lGk5ND&zT!%pr=7g#ZE;;L`18lsb)k(L<$lS z5mQjW2oizgV16PZ5>*2o6LrEV|Np;TZQlRii}2ci^o<7uo~IoTwr$@Xocmw7#`qXz z-3ftbY1!lLz$uSTDU3`LC`rw^#oSlK(5(8{1W!AT^UJpS*tp3|KW)R|mBv4W-U#{+ z7y2anR=C^o_l9Tmu|sCF-$>Bs4<^1pTIeO5-WiyGFgYsuZAp7_R1Z5W)csSYe}S!K zS7CVCXnIhr_lF>6LlCnr*7HO4`{eDfOMIQbr1}>LhORdKzS*~Oe{7uN%MNq%KA{JK zK7l7NY^}Qliv*V_YX8X(&k!hO?TK{%0s+pA-c^;+Ndg3>rr+$XI|TmT@HD|Cee5vM zaLChvBN)1lSvQ&OXKmdjsHu!j5dac=vz+gvsyiW2qnQC>^o4luD#0tVPp9|C#|g@^ z1M}94J-SmPMAa7r9YUZ8o)BV4aF1X}ZfKT(od8*Le2leam!|$m<@+Qd=DZ!h7#a^u zW(Ek5IlpWv3}fj(A5heuP}Loiemd2g8de&aB6uY`Fvs7ysWUmE_I<(tJ4F8JpV9Py z;s}Nm#YyvMLQN+b&Q15@7seA8xuWxGn{j<+Y8)htY z0spM$yaRzXvvcI19_}Mp`(mI?VB3q+!_r;Tk>LbD4RottYCrw)LjUu)i_)9g(4*IF zL2ar*W-t{Yc$Iv}ng2ZEpq@@8w)PJOb+m#w$S%`Z_1=uz$l0B(cXi@aqHtU&?$g4J z9yKwV4kqn(e#!iGc6gcW?4u-#d1Fzg^%@P?36GK16{Hk6vJU~` z8`yxpDBRu*v3`O%%6J*SheL9$TOYGD(TJV>DJL4wYmpKrW9^sX?IF6=tX11Rcr=Nz zuR&D6^r(m zl>t%l5{Yajkt6{P78QW>-qzY=KBa;gh#ZY@_F-l7{FRJb4KH!gGNsLzEvk;>4IEE` zj@x}HC+)8vv$rC)h?cl)!1aJOhv;60WnK{gt%$d>qimGI3yn2NyZYeGKZic*A zz4!_Hd&k*=EdU4)uJ;Gm&wEvF8j`0Ta2Sp=zRV(jb4yXJgvUFz)RR{@;c5I+<*Mh; z1gkLttRCry{8W-{nCwf($Qj($6U^>f#EksHk z5W*QD-;E!Art~%BJ_u|_2bfN!=2E=*#?(Az=D27sMD7vw)aCQ`&#gg!H09b-&C^sw z-IQunZ6#Q#x`CwSa|w#UA)RN=+8p!agLP+x+bpG1ik-JOo7R@ZmiaGD499HcNySoW z@3xn-PS>YBf59m+QO*n5S%5O_cdq7%s<3>|)=!J#;-Rq3X+db3Og;5zBU1Sxsnf4c z`jqHlD$d{^_p2q^{?y&luM~;pd6Wua<9E4zu1&67zML=LA~uRz4->ucZ_~__vVH)5 zy$m?3s)fal4suABX{g2QiyGnbEyoPQ_Z>e zs*&Cq@0-f(RzPhlU!W*`Muhi(`&ZAzIEilOFBP@rZE-Su*ytMz889){I@lr(Ph;gJCJ@n{`ISzzxNL2spdJ4 zFRV9dch+T`glJK7s`v*sQ6*o3ViuPb>bVQdas&33aUI)ppRr(=r9tK(wMN-=-qSeX zRt-?Hu~n$yg&Q5OP}SsblbOJ7rr#Op+O<5EQM=;3qO4y6ypTi-C)pH`K$`bTzU69| zb|HAev|l+)=2u(O^{m`01Z?G`S!KB&E!q1IWZk2C3~k<}z3VjXqoanb5tLk^H19<4 zOdn~wfFV{fN{RJV4kNx46;CT@uUg-8zl`(;|D~%`rAZ@d5UeDw6c+pKO9TV5B29oI z`?B0%DJDzg*jExqzwmpV{v)8_^}=IC&nKVp+J0WKyJS)?BJZEZ4CEZX3#$e;I*o(6 z$}#GDTQBI#BRv$?%%cUBqMS_FI+WemjXMav3Vs1HA^}f48k8?@f~H|P3Hyk(%c(8` zI0=f}`-x^^{&ZqLMc!XD<&JoFfh|Ax1lHn|Z2DG{A|LEGq1W_+F@ zSFOsEuTl-M;^9c}jVDuBBvaaVoeG%kaE=@&xoyydH~e~!H|lIS_V)2ciQY6MQEJt2 zBWQs2k^Uc2a{QjhUG`cFMX$jEpiQzBA-gQs!%-VH&-bRV>rArivb*liOLM^&kWsM( z%FU9u36SG8aIM9UMs(Qdfy~Nw(jNg9-p>?%L7Fz8iAdU0ohL1KsaM@9RHw4j+7GsIr4Ks#_X_Pg*DuXmDG1x639Qnu|6HfSVG zhu*M3QK#_VxQ#;+{~mmLb8E0#HS>YVm@*ppb+p`za2Tzs)%ZD)KN%*pvHEjU;aw$e zk6}Ph9fx!uafvOnmSrl%W{6XU+MU% zjf)A`o=e02S1N*TH$8!fRPz}>Hj;Nt;Os~u6CkBc?%Hd*B%uu9nG-7GrEz56gc;j> zh!%PgJW@pkhPh>!5(K))mfxielA!dU<*b0IsET2?a+|BjB=Qj!Zz_4300)};&51P$ z7H}yipUWbKlE^)F!{B3PW|f)rVu0N7zgOrT@iQC|)$TXg6mkBUwkhhiqjwDu`y87p z{bImUrdRCg94FR-&J)iuci}R@TQxg<3;oiSVace0tjWg7iw|1XFO@Jh5UeM5p&rv=)#|LHR&LX zbC5o?o`Jp|39_6airW20X)0jxjfA1F&{K-BlYaZq+#USKtTOD0OAh%+Gt`C1 zLl+vCsKVrFZNNp-PH#^t=`=B5Ytp^=`FOsmc!~rS_SYSLUVRvSB~k-I^`uoz1Z1hY_@$ zi!J3T2qAe6jxMFnCSavM$5 z5ts+)BE_8yP$VNY*Q-?zzDAKJd(y`M6PeSL$0RA|G&qT?R<0^|G=-HoIV4L;rtuIJ zE9`AbscFHK`r5bN1Rnl1@ENdXAt8i{P(T?Iy*)BO}!zES$cZt0E{I zdJU>ospXATacFXR@iJ&LP8F8ziu3J!f>XIni*}_M4-^7@PL9OHkfXYeo zRQQaOsFM!qEj?P_Osi7myLG6T;v8ArRGv|13Vb+(-9w6 zkfle7Y>dG%5#5~bOa2mSoTRDuG)$#?^P=O~zr$yW_DC0R>2#+Wl|M?3zot$lS|aux zb}}v1#{GNT{hbVHW#;L~n1VP*#6#`NhdUa`*&(6~+H*Hf8Mi$Blp~k2w6E)}2HqHQDclMSiVl@!MVWb!^g*^lu!Rcpkbg7ku)g62CU4#L@8LY!BO~ zP;H&LRV!NuG+WKieje%iv;4}MBfnAV&!uZjV3{9WywXtFP)g|9)xW}+*v!9vrv@de zxnC~irEI@YO|9UuRhZ`u!55kzfKWH0-1?(aAKdaRF=VDziOzZ~H{1$r+ldTK4=FZ=W647~Ng$+k1lJ_}58%^No>rUkpS~i{o>czO zVr02$u3(+`Kb?BuedKfU`9AE5zrNe-nxm4jhcUg`)xd#&Ehcz0?W}JbRVl{QSx&tY zsInjR6)FPssX`BQDLgSeu6kO`%p03iE7%9fZOqgPo%18*CIFtl9by3rDtoBN-j-Nd zSgc_El(RGN_rNw?$}(MSFE(1;s8$GT&)aAgJ!LP_s4!j@dHoZhpLgfyBly7HmzcCS zHd^P70|v8873Imd81sz=tC%2qDDQ!Bvkiui74^t?oU5+TIawH7kn$lQsK zR)74*-JlX<<(}j0Yva#KZw3#^buPO?8TCZdQd2=&o&SXY&6o$qmq*eppuv3n1xJ5U zAcqTC`RDxN4n@=+w0sm^oPFx^L83UvC)_5oG5f$)rsU#DHNQMOkZ$NsskusDrPWf= zA-CHTZn3GX3G&s9$Jg#fW;sCBO7en}StOIUhY}PT-W!1p)8Y5b&T+`HQ${EKu`&!V z$63tZxo9YR>8K=tOCutgus~-17Nrp(C!SrRT1zY z8xi{*h%nID7Z#ykDFR}x!9lOVmyCf%U6P`%qaX4hJHPEbetEXz`rijVnUYR7e#x}w zTJrYVy`-9M58)zx**f{RYAyX~yMA3m1yw!C&Ha{C*E`enXwPlgTw&KcN~1CL#)8pr zr$_!S$S_40nAXZ$$# zi2TvTsz1y9JDHpLsyXdR1mxH6gSczpw!|Oa1jNBzIOv+R>}xNbUwE>~u#NDKQSFQQ zI_@qrzsuMH+z9bQrshQ15(he@E)}F+I8sLODw9`q4ZUpn9jOIgOjG8hY3v0_J$fI! zWp4l;c;avEbyb@LYL|@sFPrzxX z^zAwzvUAem5lVS^mNkHR3jGFZ1mwM$4irs6qBYi2CN(h7wGJbf4q0$oqFyY&8)yK= zJEUVDf`YI~=&-EdNqcPtNY-Q>VKM1{1d3ntdd`dM=yZl_ zRhf!hoiPlb)=7tCX{w}CL=(&uL=$RK81Z)mDqxo*Qv7CDJVvmVxbsGcV#H*H&JcBJ zxOr2ouA&-uL$Vx`BE2_a;|3m9Y?-*;Y(ZpOkaC?8H2{yE?@d1%pRfm!TE+!j4!+)e zi+7kHij7fQ3)z{=gMpVgWDyzo=kPHO?L_M{9b`GV(v2Xp<&uD=TdQ38@2?^_H@vMG zn#x9h=$HENbfh|1eo_NjlY9-XQqjGU8FDa0d5h)`9PoD{+%n-Ihx7MzaOf#=#h}qC zC9olfGI(`x$^n}0++fHuET@{+6`y>02d7*X2(woQ-zNGd{}Qt@v&mVOgt-EX{;dqe zl>wt8U*C_z{lvP1AFs^QYhSwFT|{Ol${a}g8uX#&^5uDqNjTx_8zuvS9{C#aUv#?lujjCQ=sd$cuH*4a@?iv2V+FB(`?R%@s*>1 z9V_#};QIGDOZ$@_Y%PRjsktfbXQFC=16OL4mv@Dm9q84B-fV9&E{S#Fe9a+-qjo+Y zMFRmZeMgb33aKwl8H^-fS(g|N=R+{O61W`(DXAB1W*g`BM|BlgU6|DXj_u2AhNfkz({0BS2GFwe1x{NqB9kN_kII?vXrS|^zfAEpH@Z55VkvTYlP zXo9Ujs2AJL4+i>d+m7|P-;H{X{%*KlI%4Il(y|^c$(CER=;b1YeC9rXZAA-5dkW99 z{<*f6ag+ZKcv$J8)Y2RGqT1$G)pE%E?~ceKcx4Y$6a-F`tO zss59M3}7$ubK4=}%>U1N1=e>oZ5U!^;c;OYM1kBw8c8FQuBpssAwF_#Vp{`hnD$W{kj%s%9U_f&NuNJBXv zTSeDXzkU9uk;>IWfDUi-j}M~QLMfWPNHaop_$OE0@ZsiA9YNyumaxhrPo8G?Pp@}= z-iP+ypL^3gCa!x@fKE1r0Yt3g>CN}OWun+M=J53FK>lA_$ElS+2FU{=)QdmM9*o^i zXnR%st{5QW-d-MO%Low9o9w(p{4m`Zhg^tE$8U)?W_1*OGTx!uA$GR>d%Fr~qpEXD zeuUcQN&E1+!bEw4PiD;k#jX$P%s?d@5|RLCZ)wP4%MC&T5H1L{VIER&uD{(y)4p|k zEx%;1ST|oVxgtOs6P)%4HBzq3r*XZDkn0Pixd4z5OanAYwuZ~S+GW@6CDq+DLj|lT zPap=PJNS|iFJXcl*Rb|5Qt}eWf-L;|Cp;1mNc|LA)wTCzZK6|J_M#u+HwEMG&4!2M z5^@ZL6(QM9U7WO!-kLFpgWhJFgT0aRRKFe=&nQemsS$h)zyq4=&*{@x@ApH@(Olad zt&hkrn=sLYTRyKLICU#97oqvUhbUT6Ry>ho>errco(98DUh};EOX`Sz1P;f*4e>}$ z64$#pB+*;3bSu;hy|V#cf}I5Kh_x5`TFBV^2{s6!HTmH9cMgEu17C^^gw@ExH}c}bF`Ka+eZGPhb-xr(tX z2f2|#grMeA4??W)m%iGSm>8-$8Uq}fTcz;BRKCV%(1)=RN8~aVX%%wB3mzl(~YFC|7j*`gF*842Sd~;?wJ%u(#!BFJt?SLza@< zzUF43Tnf94dN9|42+PDoM;HDPCwY&~s|C!914o~({BFmg9mVS&1qphC4KMe@`Wl9e zaL5A-vRRs~%W{AtMzsYxU7N5!4NTVl@ZRS)me@qaX;m+PW`tM5ps8K|Q1HxAVka-! zPJk@ri=!VE;xwMiN>e}hl=LrA-rYK;6Be@h?Yk!jr$)OTk)4Jp&8 zDL(w1keZwzayTxk*{?_4YXiYI=11_H- zVnO-cz(^TNK1<#Ck3*>e_V%+;dY_4S8GI}QD4I+?=}xApitHtAH!bQs?Badw?I)q( zCicZB8s=ijRFc&S&bepT4&r)~D@5oEZ%MU~ua&EeFM2hv6TP-=$19z`sEk2QBnaV)1U@IT6&Rx@;NNHoQ9c(D{z z>3)af`b{_Lg0iifHz372s!|3^*&h=A|K>i+eqheu4!Jbef;TsC4P$Lw=ahou& zI#8%>HR7L?V({2%KcyrSVvoB6f|hB=DE;p@>$lx*`i_}@b111I-FlTNRsCY176>2U zI`hSG)dOwi2F`f*e{XSnE0|=Ls$Az7pF^j_m6#Ic!bh>HMOmc67xTdwnK9h&r%fB7`I zxWE+rGJCRJ*XLluv`Z=e=n77Pfy(WwKB$l#nO>O2?ToQTn?AAQQN)<3hs{7XL(?O?QEHmgx zOgZ4F)f5EA2RzFcA$nnex^-@aBEAK&&N@LvJ;Qap;Cth-p68z|e>5c+IxUu9kg@Lmd~k_TrvWfzSq=^BO3Sv5 zyUWU+`wM<=$;CDP;o4L?d>DJ@K7Mo-+4uwSekiI{yk`he{zyoCH?&x{c_jPkm-|oz z4SA3WsfL_=|CWn+hed@^xQ< zDyyM~^UWfO<j;S5hUAz6z(St1&ARqb?JbLDM~w|J!IJsyFfs9LO7 z1?J~H{(S2{9qH4Et#`(2a;f5JuTNQV5-;F&x{(QJT!RotfaDI3!ej<>Kd<{C$uTd?^?%&JO7 z?$*MP3!@=x@4g=>F`?e!Qh9a1kYoHf<*|>XiqDnT>9?K<)bV;U(2LG6jYUMfp(lY# z-zM5biozC3G6cVU%hZX{DIRS7=*^z9q<)sEvwj!e_yPZXip*~zPq_GJ&G$N;caK}M z>T8n~=JfR26VEvBvX!|#`z!8Q<==aCYSdi#m`eMB4Ij~cvhU;sLH;kdkr?d#@h{yj zoM%)f@ce?2{-9^oe@X!@TJS((8HA$lG5+F+cWU-wo_B}P$~i!1*7 z)QU9mo^xrbYFboRjXwB~>`K`Re($YM@-MYVsN2MQnx&-}K}y;sgp{TQr7iqk$iwb} zvPd-|mI6R`3Gv1NK0$m?SKRcy`5w&|7L9y(gGT z+QGkIW(1GyEmMF>#@;eC16OqwG6wIP!#S<#DyB>cx1@T?eg@#=TJ>m1D240x+=ey$ z%#k>L;sn2!BRJRuNjzKCZA5JDPuUAKfYxCDJ9(wf2#bv>)r9OT=}uq;>D@_{iTr}T zKA2~k!;?xJ?@9QRZH=Q@X4W8*fA2(#JzIct84_C_Z zFULq)G_EuO``hlt2^hrbe(uBy2dUS{BXH+t?)``hJsijK4e>qhIvt8>o(OhfSD@Gb zn$U&lO;^fZe_b|qySjC|@XO{`>QoBI)YzWH2S#@fxUpn>qFQ~ElqoepMj|j|0WXB#k5{3P=YXn#Q#y+e11#Qz{bflRI^w+Id1HsW6b#0O;T2(xm9!G+pv<4|c(-(9)n*?VQuly8}x#<^Da8If)C z%2F%-g#~SlEMOwnt!?VHnX;l(+Ea)z0@#!29;nM4B=F>w-Y1K0Z#~h+AsOBkw-hu9 zJAg6~{4wWLl=mqBwf8^l5L5cdJT~XIR=HvC#r%ealZQFxOXxi0<+C>$+%Po-92KMUoU9A5S!M+ z9WB!g6+M~YeX>X{EDgMoJ-5>Clij>J-v)f@ASa=PPkjOMm+Ee-`i2@66+(<^R01dAgx!_@8$!r+_;hosj!Ly5QWO%RFD#VcL zANG?}vD_SZzt9^A|lPHmtG$HPa&|J0-zu=Y>jSh4GeTm~^(cninzya6Qs~ zgrR}STAWDjJmrT6pqbj_Y1-$WfmQ&Nn@?axm7sPmmmV|@{=m1J4t-y|$I|75@4l-aUzD%dGg};VFH7_;De@ycB$#kuJ&reQ#MV&#wzI{s~ zz56(Ed+tTkw3kI@s*dC{;+hhI&$_ZX?MbcquN#^F8YVIKe+bp8%`nJ(Cq9=Bu zQiIh?&*ww~j{b47`v$u$h@R{VReX)UeqEo-XI8Xy#kG3vG%HILtK3eDW`APlby6tv z4MB0Fy4>y1#aBDCoBZge8Rs$6PIk|VcHV6HJ*R!7T!|it&8cmCL1nf)c<)H^owhAY zYwmK$5dsMwES=X1S32wE1Dy3<5^q>(3p5EYpf);-i1AfKPS?M@^%Zrja0QDCCzo$_ zS95)Yyp{i%BP}j3dmgZb$CW*XpptzL$1#Hx0;qjtYPpmvmA>|a0j6dKZYO;@QiZ}3 zdqA76dBj;E>;og6+=%lcf;b!uI&-{-+dKc;k0T;6EiaGk4yjA$$A;&Zsb!TLC47`5 z3^==0wLQl9n|3Q|OO!i|=)Hms(xa;sTL&3XDW+vev|RPWiD*8ah)I{??o)8AH#sL? zr1n^i(E~!;R`|2G0^D{h%C=xS9o?VBrCkYBo=m7^79uzlYyfr=;5!hHv*5~)$$aPe zY__r}buhLXA)8$xd*$MDyBNz2-=oQuW3Q%y&wvJR3AL*U>ZrV2H9Xz{f{5auQr$HJ zDaxi5F}w<;2sGu?O6@an`0tcGHEI3xM8fV62+AXjlG{?4PboNq0+Ev=eL+*W!{i!n zud@zd3Bn_pBLcbbd$nJJ2=%F0LVe0r?tR0<=DLaVD>mKYY9cZ=0-X56<>_mh>HNGm z7$~pk@SPFcv<4i69&cFb-Q9Na3wb|0c-S3m1L}P~&RGl@x0xiq5;GEcftUb=2f1_) z%7JM{%mxmRqz!uN`SGR`GknSrOus}Sh#WP;TVfH%6@%3+SH9OGmSr}hem6%%2sh8`M_N1=A=e%)9 zIrvX3QXeSz%=K`)h^ozQtKxEbaNTMJWvJm?-sl3s#yX%YL?&D2QN;XxXUVG zA-C>irG41GC{l6$!;inVv52@{#E!9sc0 z_6pUO*BzMv34y6js%aW+4^YUXM?f17!H2)WHtJMYPsMKMTkl{K-PmI^!7Evk19`2$ zjZ$}ZkGn7QA#jg{3zM#|mU5yvY5nL}yyaS306y{i7obZ0MOT1&dkn&0n987TyhVmH zj(WW4>)iX}dRIx7DTA&kyxniR*eCv!o0XB6GQO6Gq1Z`m_@55OOGDu^xyCr#E%y;h z*4M^x&6c0Mp+2pIBIU;;{qsNdPU}O?%nD5JKB7ZTT5;nZcXq6zx!4riM1N@E(##p( z-U_JidXXB~+R9+^*jd53T2<6U72KoKp4)Cn{M6+JSSFhIXN=znt)yEV$*PsjQ2n;K zoe?pJU^;w{YMU1G7+zhx@( z=3Sv4W-<%d^Ex`r4!W*3NxpNv9D)B}mV8&O#1_n1hb88WVF~X= z*l{^&KC)rjXEmC7o)M(BrSMnlg7ipODBI8)^(rHeu1Y&+d66{wd8J@uhSJqDY4|x5 z7HiL-{{)mbW6lG}i{5LVSo<|;sNs_Nr~LeZ^5IZZ8p5}^q% zLcc{sk%rb))&R_+g(adHJi>G#N7g$G;fO8ui520Bz`QnqJ0I?=X?spawQUx9m$*#r zrRZ-vWr&C_6F%$d_)+Io zPX*EsC(7nXJPsE4_3uW!+L`g)l3#JG8Sgc_;Ixe`t%%oG!zvK1;ij*2z~)K&(F_E# zDh-}QZ7rM4;c4aG>%WC|W#PY;+kfRPv1fDWDCvGW-5r;fXIOej_GrV^6q|qjj`)p% zDhw5q*~3YDw&XRg);^QfOl^|KVnHG8CC)7T``YgsJ#jkAW$vuCZpK_(dp`<)8ZNT(Z1TiDDk1ZxfLqs5d39?-0!5^^&K8@e zW2D++P|)CZ=VWJh=VsiOJ`ViedI)fpZn&fjbD(8gEEdufY;FXmqYQ3Y^-iq(%pqpI ze{(J962g6Sg=~Y$9*d6MNTME<#K25BqLdO7t=1bmM_1vu19Vm&=OnQImvU*T>#0?# H*hTygdlx8v literal 0 HcmV?d00001 From 23e5300a1dc6ed48adf2fa64b3466f2cd218b7db Mon Sep 17 00:00:00 2001 From: liuyi Date: Fri, 1 Aug 2025 17:03:16 +0800 Subject: [PATCH 3/4] build: dev by nodemon --- package.json | 3 +- pnpm-lock.yaml | 137 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 113 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index c214d73..2a27222 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "dev": "PORT=3004 next dev", - "dev:node": "NODE_ENV=development node server/index.js", + "dev:node": "NODE_ENV=development nodemon server/index.js", "build": "next build", "export": "next export", "start": "PORT=3004 next start", @@ -41,6 +41,7 @@ "cz-conventional-changelog": "^3.3.0", "eslint": "^8.21.0", "eslint-config-next": "12.2.3", + "nodemon": "^3.1.0", "sass": "^1.53.0", "standard-version": "^9.5.0", "zx": "^7.0.8" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a2d868..8c6ef03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,7 @@ specifiers: mongoose: ^6.5.1 next: ^12.2.2 node-schedule: ^2.1.0 + nodemon: ^3.1.0 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.53.0 @@ -44,6 +45,7 @@ devDependencies: cz-conventional-changelog: 3.3.0 eslint: 8.21.0 eslint-config-next: 12.2.3_eslint@8.21.0 + nodemon: 3.1.10 sass: 1.53.0 standard-version: 9.5.0 zx: 7.0.8 @@ -544,7 +546,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.7.2 tsutils: 3.21.0 transitivePeerDependencies: - supports-color @@ -718,7 +720,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -827,7 +828,6 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -841,7 +841,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /bson/4.6.5: resolution: {integrity: sha512-uqrgcjyOaZsHfz7ea8zLRCLe1u+QGUSzMZmvXqO24CDW7DWoW1qiN9folSwa7hSneTSgM2ykDIzF5kcQQ8cwNw==} @@ -942,7 +941,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true /classnames/2.3.1: resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} @@ -1383,14 +1381,24 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true /debug/4.3.4: @@ -1404,6 +1412,19 @@ packages: dependencies: ms: 2.1.2 + /debug/4.3.4_supports-color@5.5.0: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + dev: true + /decamelize-keys/1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} @@ -1631,11 +1652,12 @@ packages: eslint: 8.21.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 2.7.1_4826688aebe5ff8b13e05784d4881a01 - eslint-plugin-import: 2.26.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e eslint-plugin-jsx-a11y: 6.6.1_eslint@8.21.0 eslint-plugin-react: 7.30.1_eslint@8.21.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.21.0 transitivePeerDependencies: + - eslint-import-resolver-webpack - supports-color dev: true @@ -1644,6 +1666,8 @@ packages: dependencies: debug: 3.2.7 resolve: 1.22.1 + transitivePeerDependencies: + - supports-color dev: true /eslint-import-resolver-typescript/2.7.1_4826688aebe5ff8b13e05784d4881a01: @@ -1655,7 +1679,7 @@ packages: dependencies: debug: 4.3.4 eslint: 8.21.0 - eslint-plugin-import: 2.26.0_eslint@8.21.0 + eslint-plugin-import: 2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.1 @@ -1664,27 +1688,51 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3: + /eslint-module-utils/2.7.3_9aff8cbbb03e026ecc5fa8e67e99ec58: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 5.31.0_eslint@8.21.0 debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 2.7.1_4826688aebe5ff8b13e05784d4881a01 find-up: 2.1.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-import/2.26.0_eslint@8.21.0: + /eslint-plugin-import/2.26.0_cd3b8c152399a99d8f2fa9a086f4ab1e: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 5.31.0_eslint@8.21.0 array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.21.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3 + eslint-module-utils: 2.7.3_9aff8cbbb03e026ecc5fa8e67e99ec58 has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -1692,6 +1740,10 @@ packages: object.values: 1.1.5 resolve: 1.22.1 tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true /eslint-plugin-jsx-a11y/6.6.1_eslint@8.21.0: @@ -1948,7 +2000,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-node-modules/2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} @@ -2075,7 +2126,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind/1.1.1: @@ -2170,7 +2220,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -2390,6 +2439,10 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false + /ignore-by-default/1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2397,7 +2450,6 @@ packages: /immutable/4.1.0: resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} - dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -2478,7 +2530,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -2509,7 +2560,6 @@ packages: /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} @@ -2533,7 +2583,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-nan/1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} @@ -2558,7 +2607,6 @@ packages: /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -3063,7 +3111,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /mute-stream/0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} @@ -3157,6 +3204,23 @@ packages: sorted-array-functions: 1.3.0 dev: false + /nodemon/3.1.10: + resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 4.3.4_supports-color@5.5.0 + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + dev: true + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -3172,14 +3236,13 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.9.0 - semver: 7.3.7 + semver: 7.7.2 validate-npm-package-license: 3.0.4 dev: true /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -3426,7 +3489,6 @@ packages: /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pify/2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} @@ -3472,6 +3534,10 @@ packages: event-stream: 3.3.4 dev: true + /pstree.remy/1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -4095,7 +4161,6 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -4248,7 +4313,6 @@ packages: chokidar: 3.5.3 immutable: 4.1.0 source-map-js: 1.0.2 - dev: true /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -4280,6 +4344,12 @@ packages: lru-cache: 6.0.0 dev: true + /semver/7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + dev: true + /setprototypeof/1.2.0: resolution: {integrity: sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=} dev: false @@ -4316,6 +4386,13 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /simple-update-notifier/2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + dependencies: + semver: 7.7.2 + dev: true + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4636,7 +4713,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toggle-selection/1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -4647,6 +4723,11 @@ packages: engines: {node: '>=0.6'} dev: false + /touch/3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + dev: true + /tr46/3.0.0: resolution: {integrity: sha1-VVxOKXqVBhfo7t3vYzyH1NnWy/k=} engines: {node: '>=12'} @@ -4785,6 +4866,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undefsafe/2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: true + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} From 681049c0c61de7aadd37b35bb9338c2300103ef4 Mon Sep 17 00:00:00 2001 From: liuyi Date: Fri, 1 Aug 2025 17:04:55 +0800 Subject: [PATCH 4/4] feat: add refresh data, updateTime and liked number --- server/juejin/index.js | 7 ++++- server/utils/mongodb.js | 2 +- src/pages/article/index.tsx | 50 +++++++++++++++++++++++++++++----- src/styles/article.module.scss | 24 ++++++++++++---- static/Article/eye.svg | 27 ++++++------------ static/Article/liked.svg | 9 ++++++ 6 files changed, 85 insertions(+), 34 deletions(-) create mode 100644 static/Article/liked.svg diff --git a/server/juejin/index.js b/server/juejin/index.js index 3392fe4..a07922c 100644 --- a/server/juejin/index.js +++ b/server/juejin/index.js @@ -1,3 +1,8 @@ +/** + * 每天上午八点从掘金获取一次数据 + * 不在页面访问时直接从掘金获取数据,是为了防止页面刷新次数过多时调用掘金接口过多从而导致 IP 被封 + */ + const axios = require('axios') const { getDate, getDateStr } = require('../utils') @@ -13,7 +18,7 @@ const getJueJinArticleList = async () => { } const res = await axios.post('https://api.juejin.cn/content_api/v1/article/query_list', params) const { data, has_more } = res.data - data !== null && (result = result.concat(data)) + data !== null && data !== undefined && (result = result.concat(data)) has_more && await loop(res.data.cursor) } console.log('掘金查询开始') diff --git a/server/utils/mongodb.js b/server/utils/mongodb.js index 57094ca..29a8b1f 100644 --- a/server/utils/mongodb.js +++ b/server/utils/mongodb.js @@ -97,7 +97,7 @@ const updateArticleList = async () => { const tagList = getTagListByArticleList(articleList) await insertTags(tagList) } catch (error) { - console.log('updateArticleList error: ', updateArticleList) + console.log('updateArticleList error: ', error) throw error } } diff --git a/src/pages/article/index.tsx b/src/pages/article/index.tsx index 57c6f49..c45f2aa 100644 --- a/src/pages/article/index.tsx +++ b/src/pages/article/index.tsx @@ -2,7 +2,7 @@ import { useEffect, useState, useRef } from 'react'; import styles from '@/styles/article.module.scss'; import NavHeader from "@/components/navHeader"; import APP_CONF from "@/data/config"; -import {Dropdown, Space, Menu, Spin, BackTop} from "antd"; +import {Dropdown, Space, Menu, Spin, BackTop, Button} from "antd"; import { OpenOriginUrl, seo } from "@/data/doc"; import { CaretDownOutlined, VerticalAlignTopOutlined } from '@ant-design/icons'; import Head from "next/head"; @@ -18,6 +18,8 @@ const Article = (data) => { const [tag_type, setTagType] = useState(''); const [articleList, setArticleList] = useState([]); const [spinning, setSpinning] = useState(false); + const [isAdmin, setIsAdmin] = useState(false); + const [updating, setUpdating] = useState(false); const [clearArticle, setClearArticle] = useState(false); const [hasMore, setHasMore] = useState(false); const firstUpdate = useRef(true); @@ -34,6 +36,15 @@ const Article = (data) => { useEffect(() => { setMobile(isMobile(window)); + setIsAdmin(window.localStorage.getItem("is-admin") === 'true'); + getTagList() + }, []) + + useEffect(() => { + getArticleList(); + }, [tag_id, sort_type, page]) + + const getTagList=()=>{ fetch(`${fetchUrl}/api/getTagList`) .then(res => res.json()) .then(res => { @@ -47,11 +58,7 @@ const Article = (data) => { setTagType(tagList?.[0].key); setTagList(tagList || []); }) - }, []) - - useEffect(() => { - getArticleList(); - }, [tag_id, sort_type, page]) + } // 处理文章数据 const handleArticleList = (obj) => { @@ -64,6 +71,7 @@ const Article = (data) => { setClearArticle(false) } + // 获取文章列表 const getArticleList = () => { if (firstUpdate.current) { handleArticleList(data) @@ -87,6 +95,16 @@ const Article = (data) => { }) } + // 更新数据库中的文章数据 + const updateArticleList = () => { + setUpdating(true) + fetch(`${fetchUrl}/api/updateArticleList`) + .finally(() => { + setUpdating(false) + window.location.reload() + }) + } + const handleSelectSortType = (sort_type) => { setPage('1') setSortType(sort_type) @@ -142,6 +160,14 @@ const Article = (data) => {
文章列表
+
+ {isAdmin ? ( + + ) : null} + 文章数据更新时间:{articleList[0]?.createTime} +
{
{article.create_date} { mobile ? '' : article.create_time}
{article.user_name} -
{article.view_count}
+ +
+
+ + {article.view_count} +
+
+ + {article.digg_count} +
+
) diff --git a/src/styles/article.module.scss b/src/styles/article.module.scss index 6843fa0..b686d2e 100644 --- a/src/styles/article.module.scss +++ b/src/styles/article.module.scss @@ -126,6 +126,16 @@ font-size: 16px; font-weight: 600; } + .updateTime { + flex: 1; + display: flex; + align-items: center; + justify-content: flex-end; + > span { + color: #8B8FA8; + margin: 0 10px; + } + } .typeSpace { color: #3D446E; cursor: pointer; @@ -165,10 +175,6 @@ display: flex; color: #8B8FA8; white-space: nowrap; - img { - margin-right: 8px; - margin-bottom: 2px; - } .username { padding: 0 10px 0 20px; user-select: none; @@ -176,9 +182,15 @@ color: #64698B; text-decoration: none; } - .viewCount { + .countBox { flex: 1; - text-align: right; + display: flex; + align-items: center; + justify-content: flex-end; + img { + width: 16px; + margin: 0 4px 2px 24px; + } } } } diff --git a/static/Article/eye.svg b/static/Article/eye.svg index c884098..6e0fe25 100644 --- a/static/Article/eye.svg +++ b/static/Article/eye.svg @@ -1,19 +1,8 @@ - - - 切片 - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/static/Article/liked.svg b/static/Article/liked.svg new file mode 100644 index 0000000..c65f5dc --- /dev/null +++ b/static/Article/liked.svg @@ -0,0 +1,9 @@ + + + + + + + + +