pub struct Bundler<'a, 's, P, T: AtRuleParser<'a>> { /* private fields */ }Available on crate feature
bundler only.Expand description
A Bundler combines a CSS file and all imported dependencies together into a single merged style sheet.
Implementations§
Source§impl<'a, 's, P: SourceProvider> Bundler<'a, 's, P, DefaultAtRuleParser>
impl<'a, 's, P: SourceProvider> Bundler<'a, 's, P, DefaultAtRuleParser>
Sourcepub fn new(
fs: &'a P,
source_map: Option<&'s mut SourceMap>,
options: ParserOptions<'a>,
) -> Bundler<'a, 's, P, DefaultAtRuleParser>
pub fn new( fs: &'a P, source_map: Option<&'s mut SourceMap>, options: ParserOptions<'a>, ) -> Bundler<'a, 's, P, DefaultAtRuleParser>
Creates a new Bundler using the given source provider. If a source map is given, the content of each source file included in the bundle will be added accordingly.
Examples found in repository?
examples/vize_bundler_before_observer.rs (line 30)
20fn observe(case: &Value, provider: &Provider) -> Value {
21 let mut map = SourceMap::new("/");
22 let options = ParserOptions {
23 css_modules: case["cssModules"].as_bool().unwrap_or(false).then(|| Config {
24 dashed_idents: true,
25 pattern: Pattern::parse("[hash]_[local]").unwrap(),
26 ..Default::default()
27 }),
28 ..Default::default()
29 };
30 let mut bundler = Bundler::new(provider, Some(&mut map), options);
31 let result = match bundler.bundle(Path::new(case["entry"].as_str().unwrap())) {
32 Ok(mut stylesheet) => {
33 // Preserve pre-minification source/map/comment/context metadata too.
34 let bundle = json!({
35 "ast": stylesheet,
36 "sources": stylesheet.sources,
37 "sourceMapUrls": stylesheet.source_map_urls,
38 "licenseComments": stylesheet.license_comments,
39 "privateContentHashesObserved": false,
40 });
41 let minify_error = if case["minify"].as_bool().unwrap_or(false) {
42 stylesheet.minify(MinifyOptions::default()).err()
43 } else {
44 None
45 };
46 if let Some(value) = minify_error {
47 json!({"bundle": bundle, "error": error("minify", value)})
48 } else {
49 match stylesheet.to_css(PrinterOptions {
50 source_map: Some(&mut map),
51 ..Default::default()
52 }) {
53 Ok(result) => json!({
54 "bundle": bundle, "code": result.code, "exports": result.exports,
55 "references": result.references, "dependencies": result.dependencies,
56 }),
57 Err(value) => json!({"bundle": bundle, "error": error("print", value)}),
58 }
59 }
60 }
61 Err(value) => json!({"error": error("bundle", value)}),
62 };
63 let mappings: Vec<Value> = map
64 .get_mappings()
65 .iter()
66 .map(|mapping| {
67 json!({
68 "generatedLine": mapping.generated_line,
69 "generatedColumn": mapping.generated_column,
70 "original": mapping.original.map(|value| json!({
71 "line": value.original_line, "column": value.original_column,
72 "source": value.source, "name": value.name,
73 })),
74 })
75 })
76 .collect();
77 json!({
78 "result": result,
79 "map": {"json": map.to_json(None).unwrap(), "sources": map.get_sources(),
80 "sourcesContent": map.get_sources_content(), "names": map.get_names(), "mappings": mappings},
81 })
82}Source§impl<'a, 's, P: SourceProvider, T: AtRuleParser<'a> + Clone + Sync + Send> Bundler<'a, 's, P, T>
impl<'a, 's, P: SourceProvider, T: AtRuleParser<'a> + Clone + Sync + Send> Bundler<'a, 's, P, T>
Sourcepub fn new_with_at_rule_parser(
fs: &'a P,
source_map: Option<&'s mut SourceMap>,
options: ParserOptions<'a>,
at_rule_parser: &'s mut T,
) -> Self
pub fn new_with_at_rule_parser( fs: &'a P, source_map: Option<&'s mut SourceMap>, options: ParserOptions<'a>, at_rule_parser: &'s mut T, ) -> Self
Creates a new Bundler using the given source provider. If a source map is given, the content of each source file included in the bundle will be added accordingly.
Sourcepub fn bundle<'e>(
&mut self,
entry: &'e Path,
) -> Result<StyleSheet<'a, T::AtRule>, Error<BundleErrorKind<'a, P::Error>>>
pub fn bundle<'e>( &mut self, entry: &'e Path, ) -> Result<StyleSheet<'a, T::AtRule>, Error<BundleErrorKind<'a, P::Error>>>
Bundles the given entry file and all dependencies into a single style sheet.
Examples found in repository?
examples/vize_bundler_before_observer.rs (line 31)
20fn observe(case: &Value, provider: &Provider) -> Value {
21 let mut map = SourceMap::new("/");
22 let options = ParserOptions {
23 css_modules: case["cssModules"].as_bool().unwrap_or(false).then(|| Config {
24 dashed_idents: true,
25 pattern: Pattern::parse("[hash]_[local]").unwrap(),
26 ..Default::default()
27 }),
28 ..Default::default()
29 };
30 let mut bundler = Bundler::new(provider, Some(&mut map), options);
31 let result = match bundler.bundle(Path::new(case["entry"].as_str().unwrap())) {
32 Ok(mut stylesheet) => {
33 // Preserve pre-minification source/map/comment/context metadata too.
34 let bundle = json!({
35 "ast": stylesheet,
36 "sources": stylesheet.sources,
37 "sourceMapUrls": stylesheet.source_map_urls,
38 "licenseComments": stylesheet.license_comments,
39 "privateContentHashesObserved": false,
40 });
41 let minify_error = if case["minify"].as_bool().unwrap_or(false) {
42 stylesheet.minify(MinifyOptions::default()).err()
43 } else {
44 None
45 };
46 if let Some(value) = minify_error {
47 json!({"bundle": bundle, "error": error("minify", value)})
48 } else {
49 match stylesheet.to_css(PrinterOptions {
50 source_map: Some(&mut map),
51 ..Default::default()
52 }) {
53 Ok(result) => json!({
54 "bundle": bundle, "code": result.code, "exports": result.exports,
55 "references": result.references, "dependencies": result.dependencies,
56 }),
57 Err(value) => json!({"bundle": bundle, "error": error("print", value)}),
58 }
59 }
60 }
61 Err(value) => json!({"error": error("bundle", value)}),
62 };
63 let mappings: Vec<Value> = map
64 .get_mappings()
65 .iter()
66 .map(|mapping| {
67 json!({
68 "generatedLine": mapping.generated_line,
69 "generatedColumn": mapping.generated_column,
70 "original": mapping.original.map(|value| json!({
71 "line": value.original_line, "column": value.original_column,
72 "source": value.source, "name": value.name,
73 })),
74 })
75 })
76 .collect();
77 json!({
78 "result": result,
79 "map": {"json": map.to_json(None).unwrap(), "sources": map.get_sources(),
80 "sourcesContent": map.get_sources_content(), "names": map.get_names(), "mappings": mappings},
81 })
82}Auto Trait Implementations§
impl<'a, 's, P, T> !Freeze for Bundler<'a, 's, P, T>
impl<'a, 's, P, T> !RefUnwindSafe for Bundler<'a, 's, P, T>
impl<'a, 's, P, T> Send for Bundler<'a, 's, P, T>
impl<'a, 's, P, T> Sync for Bundler<'a, 's, P, T>
impl<'a, 's, P, T> Unpin for Bundler<'a, 's, P, T>
impl<'a, 's, P, T> UnsafeUnpin for Bundler<'a, 's, P, T>where
&'a P: UnsafeUnpin,
Mutex<Vec<BundleStyleSheet<'a, <T as AtRuleParser<'a>>::AtRule>>>: UnsafeUnpin,
Mutex<AtRuleParserValue<'s, T>>: UnsafeUnpin,
impl<'a, 's, P, T> UnwindSafe for Bundler<'a, 's, P, T>where
&'a P: UnwindSafe,
Mutex<Vec<BundleStyleSheet<'a, <T as AtRuleParser<'a>>::AtRule>>>: UnwindSafe,
Mutex<AtRuleParserValue<'s, T>>: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.