+25
.tangled/workflows/npm_publish.yml
+25
.tangled/workflows/npm_publish.yml
···
1
+
when:
2
+
- event: ["push"]
3
+
branch: ["master"]
4
+
5
+
engine: "nixery"
6
+
7
+
dependencies:
8
+
nixpkgs:
9
+
- nodejs
10
+
- gnugrep
11
+
12
+
steps:
13
+
- name: "Install dependencies"
14
+
command: "npm install"
15
+
16
+
- name: "tsc"
17
+
command: "npx tsc && echo 'done.'"
18
+
19
+
- name: "npm publish"
20
+
command: "git log -1 --pretty=%B | grep -q '^publish new version' && npm set //registry.npmjs.org/:_authToken=${NPM_TOKEN} && npm publish || exit 0"
21
+
22
+
clone:
23
+
skip: false
24
+
depth: 3
25
+
submodules: false
+3
-3
README.md
+3
-3
README.md
···
1
1
# build-shit
2
2
3
-
[](https://github.com/CorySanin/build-shit/blob/master/LICENSE)
3
+
[](https://tangled.sh/@sanin.dev/build-shit/blob/master/LICENSE)
4
4
[](https://www.npmjs.com/package/forking-build-shit)
5
5
[](https://www.npmjs.com/package/forking-build-shit)
6
6
7
-
A build script for preparing files for production. It handles CSS and JavaScript minification, Sass compilation, and image conversion to WebP.
7
+
A build script for preparing files for production. It handles CSS and JavaScript minification, Sass compilation, and image conversion to WebP and AVIF.
8
8
9
-
WebP conversion requires libwebp.
9
+
WebP conversion requires libwebp. AVIF conversion requires avifenc.
10
10
11
11
## Installation
12
12
+20
-19
package-lock.json
+20
-19
package-lock.json
···
1
1
{
2
2
"name": "forking-build-shit",
3
-
"version": "1.0.1",
3
+
"version": "1.0.5",
4
4
"lockfileVersion": 3,
5
5
"requires": true,
6
6
"packages": {
7
7
"": {
8
8
"name": "forking-build-shit",
9
-
"version": "1.0.1",
9
+
"version": "1.0.5",
10
10
"license": "MIT",
11
11
"dependencies": {
12
12
"csso": "5.0.5",
13
-
"sass": "1.90.0",
13
+
"sass": "1.93.2",
14
14
"uglify-js": "3.19.3"
15
15
},
16
16
"bin": {
17
-
"build-shit": "bin/build-shit.js"
17
+
"build-shit": "bin/build-shit.js",
18
+
"forking-build-shit": "bin/build-shit.js"
18
19
},
19
20
"devDependencies": {
20
21
"@sindresorhus/tsconfig": "8.0.1",
21
22
"@types/csso": "^5.0.4",
22
-
"@types/node": "^24.3.0",
23
+
"@types/node": "^24.7.2",
23
24
"@types/uglify-js": "^3.17.5",
24
-
"typescript": "5.9.2"
25
+
"typescript": "5.9.3"
25
26
}
26
27
},
27
28
"node_modules/@parcel/watcher": {
···
351
352
}
352
353
},
353
354
"node_modules/@types/node": {
354
-
"version": "24.3.0",
355
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz",
356
-
"integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==",
355
+
"version": "24.7.2",
356
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz",
357
+
"integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
357
358
"dev": true,
358
359
"license": "MIT",
359
360
"dependencies": {
360
-
"undici-types": "~7.10.0"
361
+
"undici-types": "~7.14.0"
361
362
}
362
363
},
363
364
"node_modules/@types/uglify-js": {
···
544
545
}
545
546
},
546
547
"node_modules/sass": {
547
-
"version": "1.90.0",
548
-
"resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz",
549
-
"integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
548
+
"version": "1.93.2",
549
+
"resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz",
550
+
"integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==",
550
551
"license": "MIT",
551
552
"dependencies": {
552
553
"chokidar": "^4.0.0",
···
596
597
}
597
598
},
598
599
"node_modules/typescript": {
599
-
"version": "5.9.2",
600
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
601
-
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
600
+
"version": "5.9.3",
601
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
602
+
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
602
603
"dev": true,
603
604
"license": "Apache-2.0",
604
605
"bin": {
···
622
623
}
623
624
},
624
625
"node_modules/undici-types": {
625
-
"version": "7.10.0",
626
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
627
-
"integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==",
626
+
"version": "7.14.0",
627
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz",
628
+
"integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==",
628
629
"dev": true,
629
630
"license": "MIT"
630
631
}
+9
-8
package.json
+9
-8
package.json
···
1
1
{
2
2
"name": "forking-build-shit",
3
-
"version": "1.0.1",
3
+
"version": "1.0.5",
4
4
"description": "Tiny script for preparing web assets for deployment",
5
-
"homepage": "https://github.com/CorySanin/build-shit#readme",
5
+
"homepage": "https://tangled.org/@sanin.dev/build-shit#readme",
6
6
"bugs": {
7
-
"url": "https://github.com/CorySanin/build-shit/issues"
7
+
"url": "https://tangled.org/@sanin.dev/build-shit/issues"
8
8
},
9
9
"dependencies": {
10
10
"csso": "5.0.5",
11
-
"sass": "1.90.0",
11
+
"sass": "1.93.2",
12
12
"uglify-js": "3.19.3"
13
13
},
14
14
"devDependencies": {
15
15
"@sindresorhus/tsconfig": "8.0.1",
16
16
"@types/csso": "^5.0.4",
17
-
"@types/node": "^24.3.0",
17
+
"@types/node": "^24.7.2",
18
18
"@types/uglify-js": "^3.17.5",
19
-
"typescript": "5.9.2"
19
+
"typescript": "5.9.3"
20
20
},
21
21
"repository": {
22
22
"type": "git",
23
-
"url": "git+https://github.com/CorySanin/build-shit.git"
23
+
"url": "git+https://tangled.org/@sanin.dev/build-shit"
24
24
},
25
25
"license": "MIT",
26
26
"author": {
···
31
31
"type": "module",
32
32
"main": "bin/build-shit.js",
33
33
"bin": {
34
-
"build-shit": "./bin/build-shit.js"
34
+
"build-shit": "./bin/build-shit.js",
35
+
"forking-build-shit": "./bin/build-shit.js"
35
36
},
36
37
"scripts": {
37
38
"build": "tsc"
+1
-1
src/build-shit.ts
+1
-1
src/build-shit.ts
···
75
75
await mkdir([SCRIPTSOUTDIR, SCRIPTSDIR]);
76
76
await emptyDir(SCRIPTSOUTDIR);
77
77
const files = await fsp.readdir(SCRIPTSDIR);
78
-
await Promise.all(files.map(f => new Promise(async (res, reject) => {
78
+
await Promise.all(files.filter(f => f.toLowerCase().endsWith('.js')).map(f => new Promise(async (res, _) => {
79
79
const p = path.join(SCRIPTSDIR, f);
80
80
const o = path.join(SCRIPTSOUTDIR, f);
81
81
console.log(`Processing script ${p}`);