Move asset hashing into the CLI (#3988)
* Fix deduping assets * hash assets in the linker * fix extracting assets * Fix the hashed asset name * deserialize the asset back from the link section * prevent the read from being inlined * remove some extra logs * Fix liveview routing * Only look for direct dependencies on dioxus features * fix wasm split test * On wasm, create a new object file with the asset information * Fix multiple assets * add a regression test for 3467 * fix image link * fix linker out file * fix linux linker args * add windows linker command * fix linux link args * fix windows target triple * Expose an option to build assets in the linker intercept * Fix the standalone optimizer and document it in the dx help command * include the cli opt version in the hash * fix clippy * fix ssg port * add a safety note to the read_volatile call * move found assets log * fix some merge conflicts * fix build * make most env var for the linker optional * guess the target triple when dx acts as the linker intercept * automatically find the linker for normal builds * use the right linker in wasm mode * fix mac linker * look inside archive files (rlibs) * remove out.txt * fix clippy * fix typo * fix clippy * fix build * fix dx link name in docs * ignore libcompiler_builtins warnings * fix playwright * pass typocheck * fix printing sysroot * Modify final binary * fix wasm assets * remove old link section logic * fix tests * forward manganis export args * fail to evaluate relocatable address * retain all exports in the same pattern as other platforms * Fix adding assets during a wasm hot patch * less nesting and remove logs * fix clippy * log pdb files * read from pdb * print data section contents * print with object * normal windows builds working * fix hot patch windows * clean up logs * fix clippy * clean up assets * use the most recent pdb * fix doc test * fix typo * tiny nits * make bundled a reference instead of a pointer * add helpful comment to impl * match on file format * Fix asset hashing comment --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
1 parent
f865e3f559
commit
58669f892d
45 files changed
+1174
-762
No files matched your search
@@ -1,4 +1,4 @@
|
||||
use std::path::Path;
|
||||
use std::{hash::Hasher, path::Path};
|
||||
|
||||
use anyhow::{anyhow, Context};
|
||||
use codemap::SpanLoc;
|
||||
@@ -146,12 +146,11 @@ pub(crate) fn minify_css(css: &str) -> anyhow::Result<String> {
|
||||
Ok(res.code)
|
||||
}
|
||||
|
||||
/// Process an scss/sass file into css.
|
||||
pub(crate) fn process_scss(
|
||||
/// Compile scss with grass
|
||||
pub(crate) fn compile_scss(
|
||||
scss_options: &CssAssetOptions,
|
||||
source: &Path,
|
||||
output_path: &Path,
|
||||
) -> anyhow::Result<()> {
|
||||
) -> anyhow::Result<String> {
|
||||
let style = match scss_options.minified() {
|
||||
true => OutputStyle::Compressed,
|
||||
false => OutputStyle::Expanded,
|
||||
@@ -162,7 +161,18 @@ pub(crate) fn process_scss(
|
||||
.quiet(false)
|
||||
.logger(&ScssLogger {});
|
||||
|
||||
let css = grass::from_path(source, &options)?;
|
||||
let css = grass::from_path(source, &options)
|
||||
.with_context(|| format!("Failed to compile scss file: {}", source.display()))?;
|
||||
Ok(css)
|
||||
}
|
||||
|
||||
/// Process an scss/sass file into css.
|
||||
pub(crate) fn process_scss(
|
||||
scss_options: &CssAssetOptions,
|
||||
source: &Path,
|
||||
output_path: &Path,
|
||||
) -> anyhow::Result<()> {
|
||||
let css = compile_scss(scss_options, source)?;
|
||||
let minified = minify_css(&css)?;
|
||||
|
||||
std::fs::write(output_path, minified).with_context(|| {
|
||||
@@ -199,3 +209,19 @@ impl grass::Logger for ScssLogger {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Hash the inputs to the scss file
|
||||
pub(crate) fn hash_scss(
|
||||
scss_options: &CssAssetOptions,
|
||||
source: &Path,
|
||||
hasher: &mut impl Hasher,
|
||||
) -> anyhow::Result<()> {
|
||||
// Grass doesn't expose the ast for us to traverse the imports in the file. Instead of parsing scss ourselves
|
||||
// we just hash the expanded version of the file for now
|
||||
let css = compile_scss(scss_options, source)?;
|
||||
|
||||
// Hash the compiled css
|
||||
hasher.write(css.as_bytes());
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in new issue
Block a user