Skip to content

Commit 79569ff

Browse files
committed
fix(build): Workarounds for sass
1 parent 52b510e commit 79569ff

File tree

3 files changed

+66
-24
lines changed

3 files changed

+66
-24
lines changed

script/sass.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
1-
import fs from 'fs';
2-
import sass from 'sass';
1+
import fs from "fs";
2+
import * as sass from "sass";
3+
import customImporter from "./sass_importer.js";
34

4-
const result = sass.renderSync({
5-
file: "assets/sass/styles.scss",
6-
includePaths: ["node_modules"],
7-
outputStyle: "compressed",
8-
});
5+
const result = sass.compileString(
6+
sass
7+
.compile("assets/sass/styles.scss", {
8+
importers: [customImporter],
9+
})
10+
.css.replaceAll("@import '@primer", "@use 'pkg:@primer"),
11+
{
12+
importers: [sass.NodePackageImporter()],
13+
}
14+
);
915

10-
fs.mkdirSync("assets/dist");
11-
fs.writeFileSync("assets/dist/styles.css", result.css.toString());
16+
fs.mkdirSync("assets/dist", {
17+
recursive: true,
18+
});
19+
fs.writeFileSync("assets/dist/styles.css", result.css);

script/sass_importer.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import * as fs from "fs";
2+
import * as path from "path";
3+
4+
export default {
5+
findFileUrl(url, ctx) {
6+
let originalFile = ctx.containingUrl.pathname;
7+
let resolvedUrl = path.resolve(path.dirname(originalFile), url);
8+
if (fs.existsSync(resolvedUrl)) {
9+
return new URL(`file://${resolvedUrl}`);
10+
} else {
11+
let nodeModulePath = path.resolve("node_modules", url);
12+
if (fs.existsSync(nodeModulePath)) {
13+
return new URL(`file://${nodeModulePath}`);
14+
} else if (fs.existsSync(nodeModulePath + ".scss")) {
15+
return new URL(`file://${resolvedUrl}.scss`);
16+
} else if (fs.existsSync(nodeModulePath + ".css")) {
17+
return new URL(`file://${nodeModulePath}.css`);
18+
} else {
19+
throw new Error(`File not found: ${url}`);
20+
}
21+
}
22+
},
23+
};

script/watchsass.js

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,33 @@
1-
import fs from 'fs';
2-
import sass from 'sass';
1+
import fs from "fs";
2+
import * as sass from "sass";
3+
import customImporter from "./sass_importer.js";
34

4-
const result = sass.renderSync({
5-
file: "assets/sass/styles.scss",
6-
includePaths: ["node_modules"],
7-
outputStyle: "compressed"
8-
});
5+
const result = sass.compileString(
6+
sass
7+
.compile("assets/sass/styles.scss", {
8+
importers: [customImporter],
9+
})
10+
.css.replaceAll("@import '@primer", "@use 'pkg:@primer"),
11+
{
12+
importers: [sass.NodePackageImporter()],
13+
}
14+
);
915

10-
fs.writeFileSync("assets/dist/styles.css", result.css.toString());
16+
fs.writeFileSync("assets/dist/styles.css", result.css);
1117

1218
console.log(`Watching for file changes in assets/sass`);
1319

1420
fs.watch("assets/sass", () => {
15-
const result = sass.renderSync({
16-
file: "assets/sass/styles.scss",
17-
includePaths: ["node_modules"],
18-
outputStyle: "compressed"
19-
});
21+
const result = sass.compileString(
22+
sass
23+
.compile("assets/sass/styles.scss", {
24+
importers: [customImporter],
25+
})
26+
.css.replaceAll("@import '@primer", "@use 'pkg:@primer"),
27+
{
28+
importers: [sass.NodePackageImporter()],
29+
}
30+
);
2031

21-
fs.writeFileSync("assets/dist/styles.css", result.css.toString());
22-
});
32+
fs.writeFileSync("assets/dist/styles.css", result.css);
33+
});

0 commit comments

Comments
 (0)