mirror of
https://github.com/ae-utbm/sith.git
synced 2024-11-24 18:14:22 +00:00
Mirror -index.css generation with their import location in -index.js/ts files
This commit is contained in:
parent
0485ab1120
commit
ca8c1c9d92
@ -10,6 +10,6 @@ class MarkdownInput(Textarea):
|
|||||||
|
|
||||||
context["statics"] = {
|
context["statics"] = {
|
||||||
"js": staticfiles_storage.url("bundled/core/components/easymde-index.ts"),
|
"js": staticfiles_storage.url("bundled/core/components/easymde-index.ts"),
|
||||||
"css": staticfiles_storage.url("bundled/easymde-index.css"),
|
"css": staticfiles_storage.url("bundled/core/components/easymde-index.css"),
|
||||||
}
|
}
|
||||||
return context
|
return context
|
||||||
|
@ -22,7 +22,7 @@ class AutoCompleteSelectMixin:
|
|||||||
"bundled/core/components/ajax-select-index.ts",
|
"bundled/core/components/ajax-select-index.ts",
|
||||||
]
|
]
|
||||||
css = [
|
css = [
|
||||||
"bundled/ajax-select-index.css",
|
"bundled/core/components/ajax-select-index.css",
|
||||||
"core/components/ajax-select.scss",
|
"core/components/ajax-select.scss",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{% extends "core/base.jinja" %}
|
{% extends "core/base.jinja" %}
|
||||||
|
|
||||||
{%- block additional_css -%}
|
{%- block additional_css -%}
|
||||||
<link defer rel="stylesheet" href="{{ static('bundled/ajax-select-index.css') }}">
|
<link defer rel="stylesheet" href="{{ static('bundled/core/components/ajax-select-index.css') }}">
|
||||||
<link defer rel="stylesheet" href="{{ static('core/components/ajax-select.scss') }}">
|
<link defer rel="stylesheet" href="{{ static('core/components/ajax-select.scss') }}">
|
||||||
<link defer rel="stylesheet" href="{{ static('sas/css/picture.scss') }}">
|
<link defer rel="stylesheet" href="{{ static('sas/css/picture.scss') }}">
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
@ -3,13 +3,20 @@ import { parse, resolve } from "node:path";
|
|||||||
import inject from "@rollup/plugin-inject";
|
import inject from "@rollup/plugin-inject";
|
||||||
import { glob } from "glob";
|
import { glob } from "glob";
|
||||||
import type { AliasOptions, UserConfig } from "vite";
|
import type { AliasOptions, UserConfig } from "vite";
|
||||||
|
import type { Rollup } from "vite";
|
||||||
import { viteStaticCopy } from "vite-plugin-static-copy";
|
import { viteStaticCopy } from "vite-plugin-static-copy";
|
||||||
import tsconfig from "./tsconfig.json";
|
import tsconfig from "./tsconfig.json";
|
||||||
|
|
||||||
const outDir = resolve(__dirname, "./staticfiles/generated/bundled");
|
const outDir = resolve(__dirname, "./staticfiles/generated/bundled");
|
||||||
const vendored = resolve(outDir, "vendored");
|
const vendored = resolve(outDir, "vendored");
|
||||||
const nodeModules = resolve(__dirname, "node_modules");
|
const nodeModules = resolve(__dirname, "node_modules");
|
||||||
|
const collectedFiles = glob.sync(
|
||||||
|
"./!(static)/static/bundled/**/*?(-)index.?(m)[j|t]s?(x)",
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grabs import aliases from tsconfig for #module: imports
|
||||||
|
**/
|
||||||
function getAliases(): AliasOptions {
|
function getAliases(): AliasOptions {
|
||||||
const aliases: AliasOptions = {};
|
const aliases: AliasOptions = {};
|
||||||
for (const [key, value] of Object.entries(tsconfig.compilerOptions.paths)) {
|
for (const [key, value] of Object.entries(tsconfig.compilerOptions.paths)) {
|
||||||
@ -18,7 +25,23 @@ function getAliases(): AliasOptions {
|
|||||||
return aliases;
|
return aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
type IndexPath = { [find: string]: string };
|
/**
|
||||||
|
* Helper function that finds the relative path of an index.js/ts file in django static folders
|
||||||
|
**/
|
||||||
|
function getRelativeAssetPath(path: string): string {
|
||||||
|
let relativePath: string[] = [];
|
||||||
|
const fullPath = parse(path);
|
||||||
|
for (const dir of fullPath.dir.split("/").reverse()) {
|
||||||
|
if (dir === "bundled") {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
relativePath.push(dir);
|
||||||
|
}
|
||||||
|
// We collected folders in reverse order, we put them back in the original order
|
||||||
|
relativePath = relativePath.reverse();
|
||||||
|
relativePath.push(fullPath.name);
|
||||||
|
return relativePath.join("/");
|
||||||
|
}
|
||||||
|
|
||||||
// biome-ignore lint/style/noDefaultExport: this is recommended by documentation
|
// biome-ignore lint/style/noDefaultExport: this is recommended by documentation
|
||||||
export default {
|
export default {
|
||||||
@ -29,27 +52,28 @@ export default {
|
|||||||
modulePreload: false, // would require `import 'vite/modulepreload-polyfill'` to always be injected
|
modulePreload: false, // would require `import 'vite/modulepreload-polyfill'` to always be injected
|
||||||
emptyOutDir: true,
|
emptyOutDir: true,
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
input: glob
|
input: collectedFiles,
|
||||||
.sync("./!(static)/static/bundled/**/*?(-)index.?(m)[j|t]s?(x)")
|
|
||||||
.reduce((obj: IndexPath, el) => {
|
|
||||||
// We include the path inside the bundled folder in the name
|
|
||||||
let relativePath: string[] = [];
|
|
||||||
const fullPath = parse(el);
|
|
||||||
for (const dir of fullPath.dir.split("/").reverse()) {
|
|
||||||
if (dir === "bundled") {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
relativePath.push(dir);
|
|
||||||
}
|
|
||||||
// We collected folders in reverse order, we put them back in the original order
|
|
||||||
relativePath = relativePath.reverse();
|
|
||||||
relativePath.push(fullPath.name);
|
|
||||||
obj[relativePath.join("/")] = `./${el}`;
|
|
||||||
return obj;
|
|
||||||
}, {}),
|
|
||||||
output: {
|
output: {
|
||||||
entryFileNames: "[name].js",
|
// Mirror architecture of static folders in generated .js and .css
|
||||||
assetFileNames: "[name].[ext]",
|
entryFileNames: (chunkInfo: Rollup.PreRenderedChunk) => {
|
||||||
|
if (chunkInfo.facadeModuleId !== null) {
|
||||||
|
return `${getRelativeAssetPath(chunkInfo.facadeModuleId)}.js`;
|
||||||
|
}
|
||||||
|
return "[name].js";
|
||||||
|
},
|
||||||
|
assetFileNames: (chunkInfo: Rollup.PreRenderedAsset) => {
|
||||||
|
if (
|
||||||
|
chunkInfo.names?.length === 1 &&
|
||||||
|
chunkInfo.originalFileNames?.length === 1 &&
|
||||||
|
collectedFiles.includes(chunkInfo.originalFileNames[0])
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
getRelativeAssetPath(chunkInfo.originalFileNames[0]) +
|
||||||
|
parse(chunkInfo.names[0]).ext
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return "[name].[ext]";
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user