瀏覽代碼

ref: elaborate on resource value resolution

Sv443 5 月之前
父節點
當前提交
f30782a9bc
共有 2 個文件被更改,包括 6 次插入5 次删除
  1. 2 1
      contributing.md
  2. 4 4
      src/tools/post-build.ts

+ 2 - 1
contributing.md

@@ -193,7 +193,8 @@ The main files you will be working with are:
 - Adding an asset (image, icon, stylesheet, translation file and misc. other files):
 - Adding an asset (image, icon, stylesheet, translation file and misc. other files):
   1. Add the asset to the `assets` folder in the root of the project, under the correct subfolder
   1. Add the asset to the `assets` folder in the root of the project, under the correct subfolder
   2. Add the asset to the [`assets/resources.json`](./assets/resources.json) file by following the format of the other entries.  
   2. Add the asset to the [`assets/resources.json`](./assets/resources.json) file by following the format of the other entries.  
-    If the path begins with a slash, it will start at the project root (where package.json is), otherwise it will start at the `assets` folder.
+    If the path begins with a slash, it will start at the project root (where package.json is), otherwise it will start at the `assets` folder.  
+    The path string or all values in the object of each resource will be passed through the function `resolveResourceVal()` in [`src/tools/post-build.ts`](./src/tools/post-build.ts) to resolve placeholders like `$BRANCH`. View all replacements by looking up that function.
   3. The asset will be immediately available in the userscript after the next build and the `@resource` directive will automatically point at the locally served asset or the GitHub CDN, depending on the build mode.
   3. The asset will be immediately available in the userscript after the next build and the `@resource` directive will automatically point at the locally served asset or the GitHub CDN, depending on the build mode.
   4. **When committing, make sure to commit the assets first, then rebuild the userscript and make a second commit.**  
   4. **When committing, make sure to commit the assets first, then rebuild the userscript and make a second commit.**  
     This needs to be done because the build script at `src/tools/post-build.ts` will use the *previous* commit hash to create version-independent URLs for the assets. These will continue to work in the future, instead of pointing to an ever-changing branch where files could be moved, renamed or deleted at any time.
     This needs to be done because the build script at `src/tools/post-build.ts` will use the *previous* commit hash to create version-independent URLs for the assets. These will continue to work in the future, instead of pointing to an ever-changing branch where files could be moved, renamed or deleted at any time.

+ 4 - 4
src/tools/post-build.ts

@@ -254,8 +254,8 @@ async function exists(path: string) {
 }
 }
 
 
 /** Resolves the value of an entry in resources.json */
 /** Resolves the value of an entry in resources.json */
-function resolveVal(value: string, buildNbr: string) {
-  if(!value.includes("$"))
+function resolveResourceVal(value: string, buildNbr: string) {
+  if(!(/\$/.test(value)))
     return value;
     return value;
 
 
   const replacements = [
   const replacements = [
@@ -284,8 +284,8 @@ async function getResourceDirectives(ref: string) {
         ? await getFileHashSha256(pathVal.replace(/\?.+/g, ""))
         ? await getFileHashSha256(pathVal.replace(/\?.+/g, ""))
         : undefined;
         : undefined;
       resourcesHashed[name] = typeof val === "object"
       resourcesHashed[name] = typeof val === "object"
-        ? { path: resolveVal(val.path, ref), ref: resolveVal(val.ref, ref), hash }
-        : { path: getResourceUrl(resolveVal(val, ref), ref), ref, hash };
+        ? { path: resolveResourceVal(val.path, ref), ref: resolveResourceVal(val.ref, ref), hash }
+        : { path: getResourceUrl(resolveResourceVal(val, ref), ref), ref, hash };
     }
     }
 
 
     const addResourceHashed = async (name: string, path: string, ref: string) => {
     const addResourceHashed = async (name: string, path: string, ref: string) => {