Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
inline-css
Advanced tools
The inline-css npm package is used to convert CSS styles into inline styles within HTML documents. This is particularly useful for email templates where inline styles are often required for proper rendering across different email clients.
Basic Inline CSS Conversion
This feature allows you to convert CSS styles defined in the <style> tag into inline styles within the HTML elements. The example demonstrates converting a simple HTML document with a <style> tag into one with inline styles.
const inlineCss = require('inline-css');
const html = '<html><head><style>h1 { color: red; }</style></head><body><h1>Hello, world!</h1></body></html>';
inlineCss(html, { url: ' ' }).then((result) => {
console.log(result);
});
Handling External CSS
This feature allows you to handle external CSS files by specifying the base URL. The example demonstrates converting an HTML document that links to an external CSS file into one with inline styles.
const inlineCss = require('inline-css');
const html = '<html><head><link rel="stylesheet" href="styles.css"></head><body><h1>Hello, world!</h1></body></html>';
inlineCss(html, { url: 'http://example.com/' }).then((result) => {
console.log(result);
});
Preserving Media Queries
This feature allows you to preserve media queries in the final HTML output. The example demonstrates converting an HTML document with media queries into one with inline styles while keeping the media queries intact.
const inlineCss = require('inline-css');
const html = '<html><head><style>@media (max-width: 600px) { h1 { color: blue; } }</style></head><body><h1>Hello, world!</h1></body></html>';
inlineCss(html, { url: ' ', preserveMediaQueries: true }).then((result) => {
console.log(result);
});
Juice is another popular npm package for inlining CSS into HTML. It offers similar functionality to inline-css, including support for external stylesheets and media queries. Juice is known for its ease of use and comprehensive documentation.
Premailer is a tool that can be used to inline CSS styles in HTML documents. It is available as both a Ruby gem and an npm package. Premailer offers additional features like CSS selector support and HTML minification, making it a versatile choice for email template preparation.
Email-comb is a package designed to clean and inline CSS for email templates. It focuses on removing unused CSS and inlining the necessary styles, ensuring that the final HTML is optimized for email clients. It is a good alternative to inline-css for those looking to optimize their email templates further.
Inline your CSS properties into the
style
attribute in an html file. Useful for emails.
Inspired by the juice library.
This module takes html and inlines the CSS properties into the style attribute.
/path/to/file.html
:
<html>
<head>
<style>
p { color: red; }
</style>
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>Test</p>
</body>
</html>
style.css
p {
text-decoration: underline;
}
Output:
<html>
<head>
</head>
<body>
<p style="color: red; text-decoration: underline;">Test</p>
</body>
</html>
Install with npm
npm install --save inline-css
var inlineCss = require('inline-css');
var html = "<style>div{color:red;}</style><div/>";
inlineCss(html, options)
.then(function(html) { console.log(html); });
Type: String
Default: ""
Extra css to apply to the file.
Type: Boolean
Default: true
Whether to inline styles in <style></style>
.
Type: Boolean
Default: true
Whether to resolve <link rel="stylesheet">
tags and inline the resulting styles.
Type: Boolean
Default: true
Whether to remove the original <style></style>
tags after (possibly) inlining the css from them.
Type: Boolean
Default: true
Whether to remove the original <link rel="stylesheet">
tags after (possibly) inlining the css from them.
Type: String
Default: filePath
How to resolve hrefs. Required.
Type: Boolean
Default: false
Preserves all media queries (and contained styles) within <style></style>
tags as a refinement when removeStyleTags
is true
. Other styles are removed.
Type: Boolean
Default: false
Whether to use any CSS pixel widths to create width
attributes on elements.
Type: Boolean
Default: false
Whether to apply the border
, cellpadding
and cellspacing
attributes to table
elements.
Type: Boolean
Default: false
Whether to remove the class
and id
attributes from the markup.
Type: Object
Default: { EJS: { start: '<%', end: '%>' }, HBS: { start: '{{', end: '}}' } }
An object where each value has a start
and end
to specify fenced code blocks that should be ignored during parsing and inlining. For example, Handlebars (hbs) templates are HBS: {start: '{{', end: '}}'}
. codeBlocks
can fix problems where otherwise inline-css might interpret code like <=
as HTML, when it is meant to be template language code. Note that codeBlocks
is a dictionary which can contain many different code blocks, so don't do codeBlocks: {...}
do codeBlocks.myBlock = {...}
.
When a data-embed attribute is present on a tag, inline-css will not inline the styles and will not remove the tags.
This can be used to embed email client support hacks that rely on css selectors into your email templates.
Options to passed to cheerio.
See the CONTRIBUTING Guidelines
MIT © Jonathan Kemp
FAQs
Inline css into an html file.
The npm package inline-css receives a total of 57,411 weekly downloads. As such, inline-css popularity was classified as popular.
We found that inline-css demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.