Skip to content

Commit b8334d0

Browse files
committed
2 parents 5215291 + db47bce commit b8334d0

6 files changed

Lines changed: 157 additions & 68 deletions

File tree

examples/basic/yarn.lock

Lines changed: 70 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ dom-serializer@0:
1515
domelementtype "^2.0.1"
1616
entities "^2.0.0"
1717

18+
dom-serializer@^1.0.1:
19+
version "1.1.0"
20+
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58"
21+
integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==
22+
dependencies:
23+
domelementtype "^2.0.1"
24+
domhandler "^3.0.0"
25+
entities "^2.0.0"
26+
1827
domelementtype@1, domelementtype@^1.3.1:
1928
version "1.3.1"
2029
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
@@ -32,6 +41,13 @@ domhandler@^2.3.0:
3241
dependencies:
3342
domelementtype "1"
3443

44+
domhandler@^3.0.0, domhandler@^3.3.0:
45+
version "3.3.0"
46+
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
47+
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
48+
dependencies:
49+
domelementtype "^2.0.1"
50+
3551
domutils@^1.5.1:
3652
version "1.7.0"
3753
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -40,6 +56,15 @@ domutils@^1.5.1:
4056
dom-serializer "0"
4157
domelementtype "1"
4258

59+
domutils@^2.4.2:
60+
version "2.4.2"
61+
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b"
62+
integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==
63+
dependencies:
64+
dom-serializer "^1.0.1"
65+
domelementtype "^2.0.1"
66+
domhandler "^3.3.0"
67+
4368
entities@^1.1.1:
4469
version "1.1.2"
4570
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
@@ -65,13 +90,13 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
6590
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
6691
integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
6792

68-
hasha@^5.0.0:
69-
version "5.0.0"
70-
resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.0.0.tgz#fdc3785caea03df29535fc8adb512c3d3a709004"
71-
integrity sha512-PqWdhnQhq6tqD32hZv+l1e5mJHNSudjnaAzgAHfkGiU0ABN6lmbZF8abJIulQHbZ7oiHhP8yL6O910ICMc+5pw==
93+
hasha@^5.2.2:
94+
version "5.2.2"
95+
resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
96+
integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
7297
dependencies:
73-
is-stream "^1.1.0"
74-
type-fest "^0.3.0"
98+
is-stream "^2.0.0"
99+
type-fest "^0.8.0"
75100

76101
htmlparser2@^3.9.2:
77102
version "3.10.1"
@@ -85,15 +110,25 @@ htmlparser2@^3.9.2:
85110
inherits "^2.0.1"
86111
readable-stream "^3.1.1"
87112

113+
htmlparser2@^5.0.1:
114+
version "5.0.1"
115+
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7"
116+
integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==
117+
dependencies:
118+
domelementtype "^2.0.1"
119+
domhandler "^3.3.0"
120+
domutils "^2.4.2"
121+
entities "^2.0.0"
122+
88123
inherits@^2.0.1, inherits@^2.0.3:
89124
version "2.0.4"
90125
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
91126
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
92127

93-
is-stream@^1.1.0:
94-
version "1.1.0"
95-
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
96-
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
128+
is-stream@^2.0.0:
129+
version "2.0.0"
130+
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
131+
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
97132

98133
jsonfile@^6.0.1:
99134
version "6.0.1"
@@ -104,24 +139,11 @@ jsonfile@^6.0.1:
104139
optionalDependencies:
105140
graceful-fs "^4.1.6"
106141

107-
object-assign@^4.1.1:
108-
version "4.1.1"
109-
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
110-
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
111-
112142
posthtml-hash@../../:
113-
version "1.0.0"
143+
version "1.2.0"
114144
dependencies:
115-
hasha "^5.0.0"
116-
posthtml "^0.12.0"
117-
118-
posthtml-parser@^0.4.1:
119-
version "0.4.1"
120-
resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.1.tgz#95b78fef766fbbe0a6f861b6e95582bc3d1ff933"
121-
integrity sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==
122-
dependencies:
123-
htmlparser2 "^3.9.2"
124-
object-assign "^4.1.1"
145+
hasha "^5.2.2"
146+
posthtml "^0.15.0"
125147

126148
posthtml-parser@^0.4.2:
127149
version "0.4.2"
@@ -130,23 +152,22 @@ posthtml-parser@^0.4.2:
130152
dependencies:
131153
htmlparser2 "^3.9.2"
132154

133-
posthtml-render@^1.1.5:
134-
version "1.1.5"
135-
resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.5.tgz#387934e85438a3de77085fbc7d264efb00bd0e0f"
136-
integrity sha512-yvt54j0zCBHQVEFAuR+yHld8CZrCa/E1Z/OcFNCV1IEWTLVxT8O7nYnM4IIw1CD4r8kaRd3lc42+0lgCKgm87w==
155+
posthtml-parser@^0.6.0:
156+
version "0.6.0"
157+
resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.6.0.tgz#52488cdb4fa591c3102de73197c471859ee0be63"
158+
integrity sha512-5ffwKQNgtVHdhZniWxu+1ryvaZv5l25HPLUV6W5xy5nYVWMXtvjtwRnbSpfbKFvbyl7XI+d4AqkjmonkREqnXA==
159+
dependencies:
160+
htmlparser2 "^5.0.1"
137161

138162
posthtml-render@^1.2.2:
139163
version "1.2.2"
140164
resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.2.2.tgz#f554a19ed40d40e2bfc160826b0a91d4a23656cd"
141165
integrity sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==
142166

143-
posthtml@^0.12.0:
144-
version "0.12.0"
145-
resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.12.0.tgz#6e2a2fcd774eaed1a419a95c5cc3a92b676a40a6"
146-
integrity sha512-aNUEP/SfKUXAt+ghG51LC5MmafChBZeslVe/SSdfKIgLGUVRE68mrMF4V8XbH07ZifM91tCSuxY3eHIFLlecQw==
147-
dependencies:
148-
posthtml-parser "^0.4.1"
149-
posthtml-render "^1.1.5"
167+
posthtml-render@^1.2.3:
168+
version "1.4.0"
169+
resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13"
170+
integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==
150171

151172
posthtml@^0.13.0:
152173
version "0.13.0"
@@ -156,6 +177,14 @@ posthtml@^0.13.0:
156177
posthtml-parser "^0.4.2"
157178
posthtml-render "^1.2.2"
158179

180+
posthtml@^0.15.0:
181+
version "0.15.0"
182+
resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.15.0.tgz#1b783abe2899b7796d2dbec98c45dfe069213370"
183+
integrity sha512-3M2OHOuyiE5hiEJLo070KWsnMnDgxQuaLexWMekA7/ikz0vC799OqXlUMlFYIrp6krz3zgQfNqSyzg9SvdOm9A==
184+
dependencies:
185+
posthtml-parser "^0.6.0"
186+
posthtml-render "^1.2.3"
187+
159188
readable-stream@^3.1.1:
160189
version "3.4.0"
161190
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
@@ -177,10 +206,10 @@ string_decoder@^1.1.1:
177206
dependencies:
178207
safe-buffer "~5.2.0"
179208

180-
type-fest@^0.3.0:
181-
version "0.3.1"
182-
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
183-
integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
209+
type-fest@^0.8.0:
210+
version "0.8.1"
211+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
212+
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
184213

185214
universalify@^1.0.0:
186215
version "1.0.0"

examples/custom-hash/yarn.lock

Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ dom-serializer@0:
1515
domelementtype "^2.0.1"
1616
entities "^2.0.0"
1717

18+
dom-serializer@^1.0.1:
19+
version "1.1.0"
20+
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58"
21+
integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==
22+
dependencies:
23+
domelementtype "^2.0.1"
24+
domhandler "^3.0.0"
25+
entities "^2.0.0"
26+
1827
domelementtype@1, domelementtype@^1.3.1:
1928
version "1.3.1"
2029
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
@@ -32,6 +41,13 @@ domhandler@^2.3.0:
3241
dependencies:
3342
domelementtype "1"
3443

44+
domhandler@^3.0.0, domhandler@^3.3.0:
45+
version "3.3.0"
46+
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
47+
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
48+
dependencies:
49+
domelementtype "^2.0.1"
50+
3551
domutils@^1.5.1:
3652
version "1.7.0"
3753
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -40,6 +56,15 @@ domutils@^1.5.1:
4056
dom-serializer "0"
4157
domelementtype "1"
4258

59+
domutils@^2.4.2:
60+
version "2.4.2"
61+
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b"
62+
integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==
63+
dependencies:
64+
dom-serializer "^1.0.1"
65+
domelementtype "^2.0.1"
66+
domhandler "^3.3.0"
67+
4368
entities@^1.1.1:
4469
version "1.1.2"
4570
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
@@ -65,10 +90,10 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
6590
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
6691
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
6792

68-
hasha@^5.0.0:
69-
version "5.2.0"
70-
resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c"
71-
integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==
93+
hasha@^5.2.2:
94+
version "5.2.2"
95+
resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
96+
integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
7297
dependencies:
7398
is-stream "^2.0.0"
7499
type-fest "^0.8.0"
@@ -85,6 +110,16 @@ htmlparser2@^3.9.2:
85110
inherits "^2.0.1"
86111
readable-stream "^3.1.1"
87112

113+
htmlparser2@^5.0.1:
114+
version "5.0.1"
115+
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7"
116+
integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==
117+
dependencies:
118+
domelementtype "^2.0.1"
119+
domhandler "^3.3.0"
120+
domutils "^2.4.2"
121+
entities "^2.0.0"
122+
88123
inherits@^2.0.1, inherits@^2.0.3:
89124
version "2.0.4"
90125
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
@@ -105,10 +140,10 @@ jsonfile@^6.0.1:
105140
graceful-fs "^4.1.6"
106141

107142
posthtml-hash@../../:
108-
version "1.1.0"
143+
version "1.2.0"
109144
dependencies:
110-
hasha "^5.0.0"
111-
posthtml "^0.12.0"
145+
hasha "^5.2.2"
146+
posthtml "^0.15.0"
112147

113148
posthtml-parser@^0.4.2:
114149
version "0.4.2"
@@ -117,18 +152,22 @@ posthtml-parser@^0.4.2:
117152
dependencies:
118153
htmlparser2 "^3.9.2"
119154

155+
posthtml-parser@^0.6.0:
156+
version "0.6.0"
157+
resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.6.0.tgz#52488cdb4fa591c3102de73197c471859ee0be63"
158+
integrity sha512-5ffwKQNgtVHdhZniWxu+1ryvaZv5l25HPLUV6W5xy5nYVWMXtvjtwRnbSpfbKFvbyl7XI+d4AqkjmonkREqnXA==
159+
dependencies:
160+
htmlparser2 "^5.0.1"
161+
120162
posthtml-render@^1.2.2:
121163
version "1.2.2"
122164
resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.2.2.tgz#f554a19ed40d40e2bfc160826b0a91d4a23656cd"
123165
integrity sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==
124166

125-
posthtml@^0.12.0:
126-
version "0.12.3"
127-
resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.12.3.tgz#8fa5b903907e9c10ba5b883863cc550189a309d5"
128-
integrity sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==
129-
dependencies:
130-
posthtml-parser "^0.4.2"
131-
posthtml-render "^1.2.2"
167+
posthtml-render@^1.2.3:
168+
version "1.4.0"
169+
resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13"
170+
integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==
132171

133172
posthtml@^0.13.0:
134173
version "0.13.1"
@@ -138,6 +177,14 @@ posthtml@^0.13.0:
138177
posthtml-parser "^0.4.2"
139178
posthtml-render "^1.2.2"
140179

180+
posthtml@^0.15.0:
181+
version "0.15.0"
182+
resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.15.0.tgz#1b783abe2899b7796d2dbec98c45dfe069213370"
183+
integrity sha512-3M2OHOuyiE5hiEJLo070KWsnMnDgxQuaLexWMekA7/ikz0vC799OqXlUMlFYIrp6krz3zgQfNqSyzg9SvdOm9A==
184+
dependencies:
185+
posthtml-parser "^0.6.0"
186+
posthtml-render "^1.2.3"
187+
141188
readable-stream@^3.1.1:
142189
version "3.6.0"
143190
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"

examples/transform-path/original/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<head>
44
<meta charset="utf-8" />
55
<meta property="og:image" content="https://example.com/image.[hash].png" />
6+
<meta property="twitter:image" content="https://example.com/image.[hash].png" />
67
<meta property="twitter:image" content="https://example.com/assets/small-image.[hash].png" />
78
</head>
89
<body></body>

examples/transform-path/processed/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<head>
44
<meta charset="utf-8">
55
<meta property="og:image" content="https://example.com/image.1fa9a3.png">
6+
<meta property="twitter:image" content="https://example.com/image.1fa9a3.png">
67
<meta property="twitter:image" content="https://example.com/assets/small-image.b354fd.png">
78
</head>
89
<body></body>

src/plugin.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ interface PostHTMLHashOptions {
2525
}
2626

2727
function plugin(options?: PostHTMLHashOptions) {
28+
const hashedUrls = new Map<string, string>();
29+
2830
return function posthtmlHash(tree: Node) {
2931
const exp = options?.pattern || DEFAULT_PATTERN;
3032
const hashLength = options?.hashLength || DEFAULT_HASH_LENGTH;
@@ -38,19 +40,28 @@ function plugin(options?: PostHTMLHashOptions) {
3840
const pathToFile = options?.path || "";
3941
const file = path.join(process.cwd(), pathToFile, transformedFileName!);
4042

41-
if (fs.existsSync(file)) {
42-
const buffer = fs.readFileSync(file);
43-
const hashedFileName = replaceHash(fileName!, buffer, exp, hashLength);
44-
const transformedHashedFileName = transformPath(hashedFileName);
45-
const hashedFile = path.join(process.cwd(), pathToFile, transformedHashedFileName);
46-
47-
fs.renameSync(file, hashedFile);
43+
if (hashedUrls.has(file)) {
44+
const existingHashedUrl = hashedUrls.get(file);
4845

49-
if (href) _node.attrs.href = hashedFileName;
50-
if (src) _node.attrs.src = hashedFileName;
51-
if (content) _node.attrs.content = hashedFileName;
46+
if (href) _node.attrs.href = existingHashedUrl;
47+
if (src) _node.attrs.src = existingHashedUrl;
48+
if (content) _node.attrs.content = existingHashedUrl;
5249
} else {
53-
console.log("File does not exist:", file);
50+
if (fs.existsSync(file)) {
51+
const buffer = fs.readFileSync(file);
52+
const hashedFileName = replaceHash(fileName!, buffer, exp, hashLength);
53+
const transformedHashedFileName = transformPath(hashedFileName);
54+
const hashedFile = path.join(process.cwd(), pathToFile, transformedHashedFileName);
55+
56+
fs.renameSync(file, hashedFile);
57+
hashedUrls.set(file, hashedFileName);
58+
59+
if (href) _node.attrs.href = hashedFileName;
60+
if (src) _node.attrs.src = hashedFileName;
61+
if (content) _node.attrs.content = hashedFileName;
62+
} else {
63+
console.log("File does not exist:", file);
64+
}
5465
}
5566

5667
return node;

0 commit comments

Comments
 (0)