
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
rtl-css-plugin-webpack
Advanced tools
Webpack plugin to use in addition to mini-css-extract-plugin to create a second css bundle, processed to be rtl.
This uses rtlcss under the hood
$ npm install rtl-css-plugin-webpack
Add the plugin to your webpack configuration:
const RtlCssPluginWebpack = require('rtl-css-plugin-webpack');
module.exports = {
entry: path.join(__dirname, 'src/index.js'),
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
chunkFilename: 'chunk/[name].[hash].js',
},
module: {
rules: [
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, "css-loader"],
},
],
},
plugins: [new MiniCssExtractPlugin(), new RtlCssPluginWebpack()]
};
new RtlCssPlugin({
filename: '[name].rtl.css',
chunkFilename: '[name].rtl.css',
});
filename
Default: [name].rtl.css
This option determines the name of each output CSS file.
chunkFilename
Default: [name].rtl.css
This option determines the name of non-entry chunk files.
The insert option of mini-css-extract-plugin can be used to load non-initial (async) rtl/ltr CSS chunks
Note
It's only applied to dynamically loaded css chunks, if you want to modify link attributes inside html file, please using html-webpack-plugin
const RtlCssPluginWebpack = require('rtl-css-plugin-webpack');
module.exports = {
entry: path.join(__dirname, 'src/index.js'),
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
chunkFilename: 'chunk/[name].[hash].js',
},
module: {
rules: [
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, "css-loader"],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name]-rtl.css',
chunkFilename: 'chunks/[name].[hash]-rtl.css',
// this function is going to be part of bundle to load rtl/ltr css chunk based on html dir attribute
insert: linkTag => {
if (document.documentElement.dir === 'rtl') {
linkTag.href = linkTag.href.replace('-ltr', '-rtl');
}
document.head.appendChild(linkTag);
},
}),
new RtlCssPluginWebpack({
filename: '[name]-rtl.css',
chunkFilename: 'chunks/[name].[hash]-rtl.css',
}),
]
};
We can update webpacks optimization config to avoid duplicate css chunks
module.exports = {
// ... other webpack configs
optimization: {
// ... other optimization
splitChunks: {
cacheGroups: {
// avoids duplication of dynamically loaded css chunks
styles: {
test: /\.(css|scss|less)$/,
enforce: true,
},
},
},
}
}
FAQs
generates rtl css for each css chunk generated by webpack
We found that rtl-css-plugin-webpack 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
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.