@playcraft/devkit 1.0.1-8.beta.1 → 1.0.1-8.beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +259 -0
  2. package/cli/bin/playable-scripts.js +44 -1
  3. package/cli/commands/build.js +130 -18
  4. package/cli/commands/builds.js +13 -2
  5. package/cli/commands/dev.js +7 -1
  6. package/cli/commands/pack.js +308 -39
  7. package/cli/commands/vite-dev.js +7 -1
  8. package/core/batch-build.js +1091 -125
  9. package/core/cos-uploader.js +264 -20
  10. package/core/index.js +71 -6
  11. package/core/loaders/gltf-loader.js +74 -28
  12. package/core/options.js +310 -15
  13. package/core/plugins/AdikteevInjectorPlugin.js +26 -4
  14. package/core/plugins/BigoAdsInjectorPlugin.js +21 -4
  15. package/core/plugins/DAPIInjectorPlugin.js +25 -2
  16. package/core/plugins/DebuggerInjectionPlugin.js +31 -3
  17. package/core/plugins/ExitAPIInjectorPlugin.js +57 -3
  18. package/core/plugins/FflateCompressionPlugin.js +225 -37
  19. package/core/plugins/FontInjectionWebpackPlugin.js +46 -4
  20. package/core/plugins/LiftoffInjectorPlugin.js +26 -4
  21. package/core/plugins/MRAIDInjectorPlugin.js +24 -2
  22. package/core/plugins/MintegralInjectorPlugin.js +25 -2
  23. package/core/plugins/PangleInjectorPlugin.js +24 -2
  24. package/core/plugins/SnapchatInjectorPlugin.js +26 -4
  25. package/core/plugins/TikTokInjectorPlugin.js +24 -2
  26. package/core/plugins/UnityInjectorPlugin.js +37 -8
  27. package/core/plugins/ZipPlugin.js +138 -19
  28. package/core/resources/fonts/maoken-regular.woff2 +0 -0
  29. package/core/resources/fonts/maoken-regular.woff2.chars +1 -0
  30. package/core/resources/fonts/maoken-zhuyuan.ttf +0 -0
  31. package/core/resources/fonts/pangmen-biaoti.ttf +0 -0
  32. package/core/resources/fonts/pangmen-regular.woff2 +0 -0
  33. package/core/resources/fonts/pangmen-regular.woff2.chars +1 -0
  34. package/core/utils/buildDefines.js +29 -2
  35. package/core/utils/buildTemplateString.js +40 -5
  36. package/core/utils/date.js +16 -1
  37. package/core/utils/fontRegistry.js +81 -12
  38. package/core/utils/fontResolver.js +335 -34
  39. package/core/utils/generateAdikteevHtmlWebpackPluginConfig.js +42 -7
  40. package/core/utils/generateBigabidHtmlWebpackPluginConfig.js +30 -3
  41. package/core/utils/generateInMobiHtmlWebpackPluginConfig.js +43 -7
  42. package/core/utils/injectSDKPlugins.js +58 -11
  43. package/core/utils/logOptions.js +37 -4
  44. package/core/utils/mergeOptions.js +19 -2
  45. package/core/utils/parseArgvOptions.js +110 -5
  46. package/core/utils/resolveChannelFold2Zip.js +15 -3
  47. package/core/utils/validateThemeData.js +220 -25
  48. package/core/validators/pre-build-checker.js +201 -21
  49. package/core/validators/tracking-validator.js +358 -40
  50. package/core/vite.dev.js +332 -18
  51. package/core/webpack.build.js +489 -56
  52. package/core/webpack.common.js +177 -11
  53. package/core/webpack.dev.js +82 -5
  54. package/package.json +3 -2
  55. package/core/resources/fonts/maoken/04e60956bbe055746aa7bca5c229ca8c.woff2 +0 -0
  56. package/core/resources/fonts/maoken/086a30eeaa0f5558062389361dca8685.woff2 +0 -0
  57. package/core/resources/fonts/maoken/1b1c9545aa1da01979d240f38f979b9e.woff2 +0 -0
  58. package/core/resources/fonts/maoken/1dd31fae60d98fcad0812cb4dc54afdd.woff2 +0 -0
  59. package/core/resources/fonts/maoken/1f08966635ca0dc4a64f519863df0dcc.woff2 +0 -0
  60. package/core/resources/fonts/maoken/26aab6a388b04c37fd5a4d066a512e14.woff2 +0 -0
  61. package/core/resources/fonts/maoken/29390db71394eb0d298fa1c339590e45.woff2 +0 -0
  62. package/core/resources/fonts/maoken/2b743d9f736c5cda9250fc8b85f69db8.woff2 +0 -0
  63. package/core/resources/fonts/maoken/2f16b1f8881909c4e65404610460797f.woff2 +0 -0
  64. package/core/resources/fonts/maoken/339dc88f6fd1b09336410154252f858f.woff2 +0 -0
  65. package/core/resources/fonts/maoken/3665591d2bd9a3f31a302a34a76c74dc.woff2 +0 -0
  66. package/core/resources/fonts/maoken/3b58ece5ff16a5addc9adc1c74717d12.woff2 +0 -0
  67. package/core/resources/fonts/maoken/3e3aacd6cd2255be39c97c4ed6eb978b.woff2 +0 -0
  68. package/core/resources/fonts/maoken/3e8cdd750fcbbfcf9a1101c7418eeb36.woff2 +0 -0
  69. package/core/resources/fonts/maoken/3f71b3c0ecb555f9fa88d1b2ae0ec77f.woff2 +0 -0
  70. package/core/resources/fonts/maoken/40f956d892d89a442992737448f0330b.woff2 +0 -0
  71. package/core/resources/fonts/maoken/47ecbb41501b6cb923aaa8b8324bb22f.woff2 +0 -0
  72. package/core/resources/fonts/maoken/4a6e704952e05d217e4f4d2c2a330094.woff2 +0 -0
  73. package/core/resources/fonts/maoken/4ec9fc653a6aaabd2296fac3fe906416.woff2 +0 -0
  74. package/core/resources/fonts/maoken/5d950afcbaac4bb8f44083e5f4572957.woff2 +0 -0
  75. package/core/resources/fonts/maoken/6505b718e31b5b2b29c4f50a2a2b5fe6.woff2 +0 -0
  76. package/core/resources/fonts/maoken/673405ebfdfebae1104f36efa778714d.woff2 +0 -0
  77. package/core/resources/fonts/maoken/695a686e27152d8e81b4459b64d7b6a1.woff2 +0 -0
  78. package/core/resources/fonts/maoken/6b5fb0c960eed7a53f39adb18d0ab28b.woff2 +0 -0
  79. package/core/resources/fonts/maoken/6f53ca6c761ff540e11d5f7111dad67c.woff2 +0 -0
  80. package/core/resources/fonts/maoken/7125e9df28437d053e56f85a908a7343.woff2 +0 -0
  81. package/core/resources/fonts/maoken/731865983ae51e2a4bdc6c194da0b82e.woff2 +0 -0
  82. package/core/resources/fonts/maoken/74d993e9aa68ef636eb1287439d06bb0.woff2 +0 -0
  83. package/core/resources/fonts/maoken/797653f0a72360cd584f625972b5d217.woff2 +0 -0
  84. package/core/resources/fonts/maoken/7af5930fe5e6dade3cf31d3287d6414c.woff2 +0 -0
  85. package/core/resources/fonts/maoken/7c6fe2ee55f924f00b097da208852a34.woff2 +0 -0
  86. package/core/resources/fonts/maoken/8cff8ef36a011ca7e6d103f29b22f98b.woff2 +0 -0
  87. package/core/resources/fonts/maoken/8ff8566257c5df17ddde67b2b48243a4.woff2 +0 -0
  88. package/core/resources/fonts/maoken/93988344f6df526a0033a05d2d927d76.woff2 +0 -0
  89. package/core/resources/fonts/maoken/99d1c5647f1ce540674bd32354c2038f.woff2 +0 -0
  90. package/core/resources/fonts/maoken/a328b132aac2a3f53d97b8e7ad940e1a.woff2 +0 -0
  91. package/core/resources/fonts/maoken/a7dc00c95dd1e7a8eca8053975b0c07c.woff2 +0 -0
  92. package/core/resources/fonts/maoken/ab93ca86fb3e7ad8e95b93f7de5d8f97.woff2 +0 -0
  93. package/core/resources/fonts/maoken/b1b83e931f7e2187786b87545a6ee842.woff2 +0 -0
  94. package/core/resources/fonts/maoken/bb31b8c0ccf2d93af7cc25f19a576970.woff2 +0 -0
  95. package/core/resources/fonts/maoken/bd4a61534e4a0f426dd0d396362b211d.woff2 +0 -0
  96. package/core/resources/fonts/maoken/bec7534be141c6473023f18f5aee7a0e.woff2 +0 -0
  97. package/core/resources/fonts/maoken/c133a76c68c645b46b20e7faf9894ab6.woff2 +0 -0
  98. package/core/resources/fonts/maoken/c2deab25bd23b63c794da537e208c61a.woff2 +0 -0
  99. package/core/resources/fonts/maoken/cf13611d9749dd23fd9737073d2110f6.woff2 +0 -0
  100. package/core/resources/fonts/maoken/d01182e5dd9f51dce713916e8f872bbf.woff2 +0 -0
  101. package/core/resources/fonts/maoken/d1d4c88b2a14e679d3cc9d0ad8e8abdb.woff2 +0 -0
  102. package/core/resources/fonts/maoken/df61c7f5fa45aa6156122c09653f6700.woff2 +0 -0
  103. package/core/resources/fonts/maoken/e1867d1454d8c903ba29bac70f88c211.woff2 +0 -0
  104. package/core/resources/fonts/maoken/ef912f41f9109c5d936005af5552f521.woff2 +0 -0
  105. package/core/resources/fonts/maoken/f0f119744871bb6bec7e0eef4e1ce8ba.woff2 +0 -0
  106. package/core/resources/fonts/maoken/f32a268245b50f6c19bd946239fd8cc0.woff2 +0 -0
  107. package/core/resources/fonts/maoken/f4735851e08da122f471100ecff5c4ae.woff2 +0 -0
  108. package/core/resources/fonts/maoken/f85b8f6994600622f767506ae55d6280.woff2 +0 -0
  109. package/core/resources/fonts/maoken/fc145bdf9c20b67db44156382155b465.woff2 +0 -0
  110. package/core/resources/fonts/maoken/fcd8571ec88b953c893d77c4fd5c6ebc.woff2 +0 -0
  111. package/core/resources/fonts/maoken/fcdcb3f4b26b5c1f45fdd151f45e0c6d.woff2 +0 -0
  112. package/core/resources/fonts/maoken/index.json +0 -59
  113. package/core/resources/fonts/pangmen/0047cd3053f8c06117a653b73e100391.woff2 +0 -0
  114. package/core/resources/fonts/pangmen/008870151036457b39ee8794f5bc7a64.woff2 +0 -0
  115. package/core/resources/fonts/pangmen/01b5355e45274055ad794cc1b1305e69.woff2 +0 -0
  116. package/core/resources/fonts/pangmen/0756361ea2445ec1c500d354fa0867d0.woff2 +0 -0
  117. package/core/resources/fonts/pangmen/091cf1201fbbda8dc98c01e775991bab.woff2 +0 -0
  118. package/core/resources/fonts/pangmen/0c854072dc9998bd02ea8b29b5f1f55e.woff2 +0 -0
  119. package/core/resources/fonts/pangmen/10f3f7f8da6ab5f882e816c97532a4c6.woff2 +0 -0
  120. package/core/resources/fonts/pangmen/141229a7039c633c894ea5168d0ae849.woff2 +0 -0
  121. package/core/resources/fonts/pangmen/1b0b982276f5f93b3c71b3f6b1b81184.woff2 +0 -0
  122. package/core/resources/fonts/pangmen/1e415e51c4efb3182b87665d726fc423.woff2 +0 -0
  123. package/core/resources/fonts/pangmen/1f5fb0c8d785813dc765ff889b491361.woff2 +0 -0
  124. package/core/resources/fonts/pangmen/1fe8065222947d67d4177fe3bdd782cd.woff2 +0 -0
  125. package/core/resources/fonts/pangmen/229674de0b8d208f607468537d10ca48.woff2 +0 -0
  126. package/core/resources/fonts/pangmen/27230f128a3708090bed2eb5bb6ad437.woff2 +0 -0
  127. package/core/resources/fonts/pangmen/2d8f78526cd5d63e22274b3f0e5c4e50.woff2 +0 -0
  128. package/core/resources/fonts/pangmen/2f441859584ca1d060378be9f1173a6a.woff2 +0 -0
  129. package/core/resources/fonts/pangmen/319ed7be5128268f3cf297464b305a55.woff2 +0 -0
  130. package/core/resources/fonts/pangmen/35a41344eec91ef694ca59fda4dc9ccc.woff2 +0 -0
  131. package/core/resources/fonts/pangmen/3715cbec78511ff67e44fdd363b5fd79.woff2 +0 -0
  132. package/core/resources/fonts/pangmen/37d468e8e898644f8fddc9f83f04a5b1.woff2 +0 -0
  133. package/core/resources/fonts/pangmen/384b560d66242e5c1062489020d8749c.woff2 +0 -0
  134. package/core/resources/fonts/pangmen/38ef10dd61436ebaeb8dada7b827595c.woff2 +0 -0
  135. package/core/resources/fonts/pangmen/3e8bdfd8597f723100ff7d6b54e803f9.woff2 +0 -0
  136. package/core/resources/fonts/pangmen/43d57e12e1ec85c68a289d88f920f62e.woff2 +0 -0
  137. package/core/resources/fonts/pangmen/4c4ee1006529ddcc67e7c195d5ddb2e0.woff2 +0 -0
  138. package/core/resources/fonts/pangmen/4f65210dd5014352f4c6eb1a791e56c9.woff2 +0 -0
  139. package/core/resources/fonts/pangmen/5179f5b92b71d655b9094b282ca39161.woff2 +0 -0
  140. package/core/resources/fonts/pangmen/5282fc1cc80a878d744621a36279a1fa.woff2 +0 -0
  141. package/core/resources/fonts/pangmen/57604d7bad494a118e0fa9a6c0f1035a.woff2 +0 -0
  142. package/core/resources/fonts/pangmen/5891eaedeb9999f6b71434efc42407db.woff2 +0 -0
  143. package/core/resources/fonts/pangmen/592e3b1817378c607c8b6b183c89019a.woff2 +0 -0
  144. package/core/resources/fonts/pangmen/5c7c16778cf226e25ef39e475a19afa0.woff2 +0 -0
  145. package/core/resources/fonts/pangmen/5eccbf1ee87f73db786ee0a8441df8a3.woff2 +0 -0
  146. package/core/resources/fonts/pangmen/606a4091be7a3307a2d9adc4d2206b04.woff2 +0 -0
  147. package/core/resources/fonts/pangmen/62da615f3cbb7d19ce02973b009ec5b9.woff2 +0 -0
  148. package/core/resources/fonts/pangmen/63f9972982226af9df16006408160e8a.woff2 +0 -0
  149. package/core/resources/fonts/pangmen/6702bbfff577fce5bc621a91fdcb78bc.woff2 +0 -0
  150. package/core/resources/fonts/pangmen/6cd32dbf440a9b7711cc293b19f4c2d7.woff2 +0 -0
  151. package/core/resources/fonts/pangmen/6ef49a0811c0a0892dfbca6602365e6f.woff2 +0 -0
  152. package/core/resources/fonts/pangmen/7194cb1fa135d58fee1611bb8915fe25.woff2 +0 -0
  153. package/core/resources/fonts/pangmen/71baf3daab3248b0748dd187ab2fbc45.woff2 +0 -0
  154. package/core/resources/fonts/pangmen/7457db009eff249ec587c7d912c5d347.woff2 +0 -0
  155. package/core/resources/fonts/pangmen/762d1c7a28837c08180123e98dbe8cbf.woff2 +0 -0
  156. package/core/resources/fonts/pangmen/76e3d855d8684a1ee4d12cf7a572ca78.woff2 +0 -0
  157. package/core/resources/fonts/pangmen/78a97efdf675a6dcf903b4725de01219.woff2 +0 -0
  158. package/core/resources/fonts/pangmen/7b42a8cbf34bd2a0820ed81bb4730b6d.woff2 +0 -0
  159. package/core/resources/fonts/pangmen/7d07b13e8fc6502f0d2e21a7bb87ddb1.woff2 +0 -0
  160. package/core/resources/fonts/pangmen/7e710c007a48e4410861c67a9a26d4fc.woff2 +0 -0
  161. package/core/resources/fonts/pangmen/7eb8fe8685f6f2d6f0e223337f3a2b2b.woff2 +0 -0
  162. package/core/resources/fonts/pangmen/7ec1b00b541c2c2817cf352e2634bf5b.woff2 +0 -0
  163. package/core/resources/fonts/pangmen/7ffdd7059669ad52af7995b515889eeb.woff2 +0 -0
  164. package/core/resources/fonts/pangmen/818c6b2f12623b5a43d1036cb7f71b61.woff2 +0 -0
  165. package/core/resources/fonts/pangmen/81983731abfefd6a400b83b93d9e3665.woff2 +0 -0
  166. package/core/resources/fonts/pangmen/821ad173f8fd8eccd214241cc651657b.woff2 +0 -0
  167. package/core/resources/fonts/pangmen/83ee6dce60a5f156da3ad18e5cfb3e6e.woff2 +0 -0
  168. package/core/resources/fonts/pangmen/87db73da676a2e7b3e640e84187a5c86.woff2 +0 -0
  169. package/core/resources/fonts/pangmen/89b2edc17dd7ab4332f18b038d268068.woff2 +0 -0
  170. package/core/resources/fonts/pangmen/8b3f89232252b80f6e12ab91d93fda96.woff2 +0 -0
  171. package/core/resources/fonts/pangmen/928a7b39a7c4efdca10f70dfcdb917ac.woff2 +0 -0
  172. package/core/resources/fonts/pangmen/945d03601ca6e8be5f7e6043ecb716a5.woff2 +0 -0
  173. package/core/resources/fonts/pangmen/97de16fa122ebcbff22956b7b2de2f77.woff2 +0 -0
  174. package/core/resources/fonts/pangmen/9882677dd482462a6c1c0a1d7efbb15d.woff2 +0 -0
  175. package/core/resources/fonts/pangmen/9c46188cc1e1711f860fa06d2c29dcc1.woff2 +0 -0
  176. package/core/resources/fonts/pangmen/a279650fd2f2f115ab30cbbf748f85f9.woff2 +0 -0
  177. package/core/resources/fonts/pangmen/a3bfd69906b38ab891501ac997bd577d.woff2 +0 -0
  178. package/core/resources/fonts/pangmen/a4cc4f73c30d1dca3f7abd656705e239.woff2 +0 -0
  179. package/core/resources/fonts/pangmen/a54d94633b077f678d15b96ad9e6a9c9.woff2 +0 -0
  180. package/core/resources/fonts/pangmen/ab9bd513cba626dee079d3f8f35da118.woff2 +0 -0
  181. package/core/resources/fonts/pangmen/b4b057c12d1e44681bdb5c5e92f8e070.woff2 +0 -0
  182. package/core/resources/fonts/pangmen/b8c1e4b1ab3beb334fa773a50c9221b0.woff2 +0 -0
  183. package/core/resources/fonts/pangmen/b93617eda1294f0696193c5237320892.woff2 +0 -0
  184. package/core/resources/fonts/pangmen/bac50a33e26632667ed330c817b37dcf.woff2 +0 -0
  185. package/core/resources/fonts/pangmen/c31e6efe815ccefa90bebc1fa64aba8b.woff2 +0 -0
  186. package/core/resources/fonts/pangmen/c75ff5aa44a05db009b0a38d05f4040b.woff2 +0 -0
  187. package/core/resources/fonts/pangmen/ca70255a9a388b3f33cff49d5abc31f2.woff2 +0 -0
  188. package/core/resources/fonts/pangmen/cb249c8c31a2bee3d6a68fd1c74c061a.woff2 +0 -0
  189. package/core/resources/fonts/pangmen/cb898d32532efe5a7933672228bc620c.woff2 +0 -0
  190. package/core/resources/fonts/pangmen/cc3c33c20e8abd03b9e5acc637985d63.woff2 +0 -0
  191. package/core/resources/fonts/pangmen/cca20bec40d1a11ede1ec496d22cd026.woff2 +0 -0
  192. package/core/resources/fonts/pangmen/cedee24be6ea34e35c53c0ce5edd7af0.woff2 +0 -0
  193. package/core/resources/fonts/pangmen/d42c580643039640037f5c63750ac711.woff2 +0 -0
  194. package/core/resources/fonts/pangmen/dbe1c94b8d92f8915c33fff55b625716.woff2 +0 -0
  195. package/core/resources/fonts/pangmen/dced2d67eceeefa7f45ba44854174b8b.woff2 +0 -0
  196. package/core/resources/fonts/pangmen/dee98b9b0545a42fd3aaa87ec1fa213e.woff2 +0 -0
  197. package/core/resources/fonts/pangmen/e6ac6bb1654d431fe62556a342b16e52.woff2 +0 -0
  198. package/core/resources/fonts/pangmen/eb9be6e3e450bf5706308fcec576c6df.woff2 +0 -0
  199. package/core/resources/fonts/pangmen/ee8cb027810ba5b5d9016774789f747b.woff2 +0 -0
  200. package/core/resources/fonts/pangmen/f0ecb29938306af8e9117a24eefad319.woff2 +0 -0
  201. package/core/resources/fonts/pangmen/f1a1a697d45d7f13a71a0a38424a98a7.woff2 +0 -0
  202. package/core/resources/fonts/pangmen/f203894451810a009d6795f1b0493989.woff2 +0 -0
  203. package/core/resources/fonts/pangmen/f53b808c0d5afb527499049ba225198e.woff2 +0 -0
  204. package/core/resources/fonts/pangmen/f6f69823eda331486d1d1a6e676e1d4a.woff2 +0 -0
  205. package/core/resources/fonts/pangmen/fb1ad0e1ba9ca84b66aa88867ce4109c.woff2 +0 -0
  206. package/core/resources/fonts/pangmen/index.json +0 -95
@@ -1,11 +1,177 @@
1
- "use strict";const path=require("path");const fs=require("fs");const TsconfigPathsPlugin=require("tsconfig-paths-webpack-plugin");const{VueLoaderPlugin}=require("vue-loader");const{options}=require("./options");const tsConfigPath=path.resolve(options.tsConfig);const jsConfigPath=path.resolve(options.jsConfig);let jsTsConfigPath=null;if(fs.existsSync(tsConfigPath)){jsTsConfigPath=tsConfigPath}else if(fs.existsSync(jsConfigPath)){jsTsConfigPath=jsConfigPath}/** @type {string[]} List of file extensions that webpack will resolve */const allowedExtensions=[".vue",".ts",".tsx",".js",".json",".json5",".png",".glb",".fbx",".obj",".jpg",".webp",".mp3",".svg",".xml",".atlas",".fnt",".css",".gif",".mp4",".woff",".woff2",".ttf",".otf"];/** @type {import('webpack').Configuration} Base webpack configuration used by both development and build configs */const webpackConfig={entry:path.resolve("src/index"),resolve:{extensions:allowedExtensions,alias:{assets:path.resolve("assets"),vue:"vue/dist/vue.esm-bundler.js","@":path.resolve("src")},plugins:jsTsConfigPath?[new TsconfigPathsPlugin({configFile:jsTsConfigPath,extensions:allowedExtensions})]:[]},output:{filename:"build.js",path:path.resolve("dist")},module:{rules:[// Vue 单文件组件
2
- {test:/\.vue$/,loader:"vue-loader"},// {
3
- // test: /\.tsx?$/,
4
- // use: 'ts-loader',
5
- // exclude: /node_modules/,
6
- // },
7
- {test:/\.ts?$/,exclude:/node_modules/,use:[{loader:"babel-loader",options:{// presets: ['@babel/preset-env'],
8
- plugins:options.compilation.allowTemplateLiterals===false?["@babel/plugin-transform-template-literals"]:[]}},{loader:"esbuild-loader",options:{loader:"ts",target:"es2015"}}]},{test:/\.css$/,use:["style-loader","css-loader"]},{test:/\.(js|mjs)$/,// exclude: /node_modules/,
9
- use:{loader:"babel-loader",options:{// presets: ['@babel/preset-env'],
10
- plugins:options.compilation.allowTemplateLiterals===false?["@babel/plugin-transform-template-literals"]:[]}}},{test:/\.(gltf)$/,loader:path.join(__dirname,"loaders/gltf-loader.js")},{test:/\.(gif|png|jpe?g|webp|mp3|mp4|m4a|ogg|wav|glb|fbx|obj)$/i,type:"asset/inline"},{test:/\.json5$/i,type:"javascript/auto",use:{loader:"json5-loader",options:{esModule:false}}},// 处理 json?url → base64
11
- {test:/\.json$/i,resourceQuery:/url/,type:"asset/inline",generator:{dataUrl:content=>`data:application/json;base64,${content.toString("base64")}`}},{test:/\.(svg|xml)$/i,type:"asset/source"},{test:/\.atlas$/,type:"asset/inline",generator:{dataUrl:content=>{return`data:text/atlas;base64,${content.toString("base64")}`}}},{test:/\.fnt$/i,type:"asset/inline",generator:{dataUrl:content=>{return`data:text/plain;base64,${content.toString("base64")}`}}},{test:/\.(woff|woff2|eot|ttf|otf)$/i,type:"asset/inline"}]},plugins:[new VueLoaderPlugin]};exports.allowedExtensions=allowedExtensions;exports.webpackCommonConfig=webpackConfig;
1
+ const path = require('path');
2
+ const fs = require('fs');
3
+ const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
4
+ const { VueLoaderPlugin } = require('vue-loader');
5
+ const { options } = require('./options');
6
+
7
+ const tsConfigPath = path.resolve(options.tsConfig);
8
+ const jsConfigPath = path.resolve(options.jsConfig);
9
+ let jsTsConfigPath = null;
10
+ if (fs.existsSync(tsConfigPath)) {
11
+ jsTsConfigPath = tsConfigPath;
12
+ } else if (fs.existsSync(jsConfigPath)) {
13
+ jsTsConfigPath = jsConfigPath;
14
+ }
15
+
16
+ /** @type {string[]} List of file extensions that webpack will resolve */
17
+ const allowedExtensions = [
18
+ '.vue',
19
+ '.ts',
20
+ '.tsx',
21
+ '.js',
22
+ '.json',
23
+ '.json5',
24
+ '.png',
25
+ '.glb',
26
+ '.fbx',
27
+ '.obj',
28
+ '.jpg',
29
+ '.webp',
30
+ '.mp3',
31
+ '.svg',
32
+ '.xml',
33
+ '.atlas',
34
+ '.fnt',
35
+ '.css',
36
+ '.gif',
37
+ '.mp4',
38
+ '.woff',
39
+ '.woff2',
40
+ '.ttf',
41
+ '.otf'
42
+ ];
43
+
44
+ /** @type {import('webpack').Configuration} Base webpack configuration used by both development and build configs */
45
+ const webpackConfig = {
46
+ entry: path.resolve('src/index'),
47
+ resolve: {
48
+ extensions: allowedExtensions,
49
+ alias: {
50
+ assets: path.resolve('assets'),
51
+ vue: 'vue/dist/vue.esm-bundler.js',
52
+ '@': path.resolve('src'),
53
+ },
54
+ plugins: jsTsConfigPath
55
+ ? [
56
+ new TsconfigPathsPlugin({
57
+ configFile: jsTsConfigPath,
58
+ extensions: allowedExtensions
59
+ })
60
+ ]
61
+ : []
62
+ },
63
+ output: {
64
+ filename: 'build.js',
65
+ path: path.resolve('dist')
66
+ },
67
+ module: {
68
+ rules: [
69
+ // Vue 单文件组件
70
+ {
71
+ test: /\.vue$/,
72
+ loader: 'vue-loader'
73
+ },
74
+ // {
75
+ // test: /\.tsx?$/,
76
+ // use: 'ts-loader',
77
+ // exclude: /node_modules/,
78
+ // },
79
+ {
80
+ test: /\.ts?$/,
81
+ exclude: /node_modules/,
82
+ use: [
83
+ {
84
+ loader: 'babel-loader',
85
+ options: {
86
+ // presets: ['@babel/preset-env'],
87
+ plugins:
88
+ options.compilation.allowTemplateLiterals === false ? ['@babel/plugin-transform-template-literals'] : []
89
+ }
90
+ },
91
+
92
+ {
93
+ loader: 'esbuild-loader',
94
+ options: {
95
+ loader: 'ts',
96
+ target: 'es2015'
97
+ }
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ test: /\.css$/,
103
+ use: ['style-loader', 'css-loader']
104
+ },
105
+ {
106
+ test: /\.(js|mjs)$/,
107
+ // exclude: /node_modules/,
108
+ use: {
109
+ loader: 'babel-loader',
110
+ options: {
111
+ // presets: ['@babel/preset-env'],
112
+ plugins: options.compilation.allowTemplateLiterals === false ? ['@babel/plugin-transform-template-literals'] : []
113
+ }
114
+ }
115
+ },
116
+ {
117
+ test: /\.(gltf)$/,
118
+ loader: path.join(__dirname, 'loaders/gltf-loader.js')
119
+ },
120
+ {
121
+ test: /\.(gif|png|jpe?g|webp|mp3|mp4|m4a|ogg|wav|glb|fbx|obj)$/i,
122
+ type: 'asset/inline'
123
+ },
124
+ {
125
+ test: /\.json5$/i,
126
+ type: 'javascript/auto',
127
+ use: {
128
+ loader: 'json5-loader',
129
+ options: {
130
+ esModule: false
131
+ }
132
+ }
133
+ },
134
+ // 处理 json?url → base64
135
+ {
136
+ test: /\.json$/i,
137
+ resourceQuery: /url/,
138
+ type: 'asset/inline',
139
+ generator: {
140
+ dataUrl: (content) => `data:application/json;base64,${content.toString('base64')}`
141
+ }
142
+ },
143
+ {
144
+ test: /\.(svg|xml)$/i,
145
+ type: 'asset/source'
146
+ },
147
+ {
148
+ test: /\.atlas$/,
149
+ type: 'asset/inline',
150
+ generator: {
151
+ dataUrl: (content) => {
152
+ return `data:text/atlas;base64,${content.toString('base64')}`;
153
+ }
154
+ }
155
+ },
156
+ {
157
+ test: /\.fnt$/i,
158
+ type: 'asset/inline',
159
+ generator: {
160
+ dataUrl: (content) => {
161
+ return `data:text/plain;base64,${content.toString('base64')}`;
162
+ }
163
+ }
164
+ },
165
+ {
166
+ test: /\.(woff|woff2|eot|ttf|otf)$/i,
167
+ type: 'asset/inline'
168
+ }
169
+ ]
170
+ },
171
+ plugins: [
172
+ new VueLoaderPlugin()
173
+ ]
174
+ };
175
+
176
+ exports.allowedExtensions = allowedExtensions;
177
+ exports.webpackCommonConfig = webpackConfig;
@@ -1,15 +1,92 @@
1
- "use strict";const{merge}=require("webpack-merge");const webpack=require("webpack");const HtmlWebpackPlugin=require("html-webpack-plugin");const WebpackDevServer=require("webpack-dev-server");const{webpackCommonConfig}=require("./webpack.common.js");const path=require("path");const{DebuggerInjectionPlugin}=require("./plugins/DebuggerInjectionPlugin.js");const{options}=require("./options.js");const{mergeOptions}=require("./utils/mergeOptions.js");const{buildDefines}=require("./utils/buildDefines.js");const{logOptions}=require("./utils/logOptions.js");const{injectSDKPlugins}=require("./utils/injectSDKPlugins.js");/**
1
+ const { merge } = require('webpack-merge');
2
+ const webpack = require('webpack');
3
+ const HtmlWebpackPlugin = require('html-webpack-plugin');
4
+ const WebpackDevServer = require('webpack-dev-server');
5
+ const { webpackCommonConfig } = require('./webpack.common.js');
6
+ const path = require('path');
7
+ const { DebuggerInjectionPlugin } = require('./plugins/DebuggerInjectionPlugin.js');
8
+ const { options } = require('./options.js');
9
+ const { mergeOptions } = require('./utils/mergeOptions.js');
10
+ const { buildDefines } = require('./utils/buildDefines.js');
11
+ const { logOptions } = require('./utils/logOptions.js');
12
+ const { injectSDKPlugins } = require('./utils/injectSDKPlugins.js');
13
+
14
+ /**
2
15
  * Creates webpack configuration for development
3
16
  * @param {Partial<import('./index').CLIOptions>} [customOptions] - Custom options to merge with default options
4
17
  * @param {Record<string, any>} [customDefines] - Additional defines for webpack.DefinePlugin
5
18
  * @param {import('webpack').Configuration} [webpackCustomConfig] - Custom webpack config to merge
6
19
  * @returns {import('webpack').Configuration} Final webpack development configuration
7
- */function makeWebpackDevConfig(customOptions,customDefines,webpackCustomConfig){const devOptions=mergeOptions(options,customOptions);logOptions(devOptions);customDefines=customDefines||{};webpackCustomConfig=webpackCustomConfig||{};const webpackConfig=merge(webpackCommonConfig,{mode:"development",devtool:"inline-source-map",devServer:{static:{directory:path.resolve("dist")},hot:true,// compress: true,
8
- port:devOptions["port"],allowedHosts:"all",open:devOptions["open"]},plugins:[new HtmlWebpackPlugin({template:path.resolve("src/index.html"),inlineSource:".(js|css|png|jpg|webp|svg|xml|atlas|mp3|gif|glb|fbx|obj)$",meta:{viewport:"width=device-width,initial-scale=1.0,viewport-fit=cover,maximum-scale=1.0,user-scalable=no"}}),new webpack.DefinePlugin({...buildDefines(),...devOptions.defines,__DEV__:JSON.stringify(devOptions["dev"]===undefined?true:devOptions["dev"]),...customDefines})]},webpackCustomConfig);if(devOptions["debugger"]){webpackConfig.plugins.push(new DebuggerInjectionPlugin(devOptions["debugger"]))}// 注入渠道 SDK 插件(与 build 保持一致)
9
- injectSDKPlugins(webpackConfig,{network:devOptions["network"],protocol:devOptions["protocol"],orientation:devOptions["orientation"]});return webpackConfig}/**
20
+ */
21
+ function makeWebpackDevConfig(customOptions, customDefines, webpackCustomConfig) {
22
+ const devOptions = mergeOptions(options, customOptions);
23
+ logOptions(devOptions)
24
+ customDefines = customDefines || {};
25
+ webpackCustomConfig = webpackCustomConfig || {};
26
+
27
+ const webpackConfig = merge(
28
+ webpackCommonConfig,
29
+ {
30
+ mode: 'development',
31
+ devtool: 'inline-source-map',
32
+ devServer: {
33
+ static: {
34
+ directory: path.resolve('dist')
35
+ },
36
+ hot: true,
37
+ // compress: true,
38
+ port: devOptions['port'],
39
+ allowedHosts: 'all',
40
+ open: devOptions['open']
41
+ },
42
+ plugins: [
43
+ new HtmlWebpackPlugin({
44
+ template: path.resolve('src/index.html'),
45
+ inlineSource: '.(js|css|png|jpg|webp|svg|xml|atlas|mp3|gif|glb|fbx|obj)$',
46
+ meta: {
47
+ viewport: 'width=device-width,initial-scale=1.0,viewport-fit=cover,maximum-scale=1.0,user-scalable=no'
48
+ }
49
+ }),
50
+
51
+ new webpack.DefinePlugin({
52
+ ...buildDefines(),
53
+ ...devOptions.defines,
54
+ __DEV__: JSON.stringify(devOptions['dev'] === undefined ? true : devOptions['dev']),
55
+ ...customDefines
56
+ })
57
+ ]
58
+ },
59
+ webpackCustomConfig
60
+ );
61
+
62
+ if (devOptions['debugger']) {
63
+ webpackConfig.plugins.push(new DebuggerInjectionPlugin(devOptions['debugger']));
64
+ }
65
+
66
+ // 注入渠道 SDK 插件(与 build 保持一致)
67
+ injectSDKPlugins(webpackConfig, {
68
+ network: devOptions['network'],
69
+ protocol: devOptions['protocol'],
70
+ orientation: devOptions['orientation']
71
+ });
72
+
73
+ return webpackConfig;
74
+ }
75
+
76
+ /**
10
77
  * Starts webpack development server
11
78
  * @param {import('webpack').Configuration} [webpackConfig] - Webpack configuration to use, creates default if not provided
12
79
  * @param {Partial<import('./index').CLIOptions>} [customOptions] - Custom options to merge with default options
13
80
  * @param {Record<string, any>} [customDefines] - Additional defines for webpack.DefinePlugin
14
81
  * @param {import('webpack').Configuration} [webpackCustomConfig] - Custom webpack config to merge
15
- */function runDev(webpackConfig,customOptions,customDefines,webpackCustomConfig){if(!webpackConfig)webpackConfig=makeWebpackDevConfig(customOptions,customDefines,webpackCustomConfig);const compiler=webpack(webpackConfig);const server=new WebpackDevServer(webpackConfig.devServer,compiler);server.start()}exports.makeWebpackDevConfig=makeWebpackDevConfig;exports.runDev=runDev;
82
+ */
83
+ function runDev(webpackConfig, customOptions, customDefines, webpackCustomConfig) {
84
+ if (!webpackConfig) webpackConfig = makeWebpackDevConfig(customOptions, customDefines, webpackCustomConfig);
85
+
86
+ const compiler = webpack(webpackConfig);
87
+ const server = new WebpackDevServer(webpackConfig.devServer, compiler);
88
+ server.start();
89
+ }
90
+
91
+ exports.makeWebpackDevConfig = makeWebpackDevConfig;
92
+ exports.runDev = runDev;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playcraft/devkit",
3
- "version": "1.0.18.beta.1",
3
+ "version": "1.0.18.beta.3",
4
4
  "description": "HTML5 Playable Ads 构建工具,支持多广告渠道打包",
5
5
  "main": "core/index.js",
6
6
  "module": "core/index.js",
@@ -15,6 +15,7 @@
15
15
  "defines.d.ts"
16
16
  ],
17
17
  "scripts": {
18
+ "build": "node scripts/build.js",
18
19
  "deploy": "npm run build && cd dist && npm publish --registry https://registry.npmjs.org/ --access public",
19
20
  "deploy:beta": "npm run build && cd dist && npm publish --registry https://registry.npmjs.org/ --access public --tag beta"
20
21
  },
@@ -82,4 +83,4 @@
82
83
  "publishConfig": {
83
84
  "registry": "https://www.npmjs.com/registry"
84
85
  }
85
- }
86
+ }