
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
这是一个库化CSS样式的工具
目的功能npm i csslibify
.开头的视为类名条件,否则视为标签名条件.的类名,返回新类名),默认为${pkg}---{classname}let csslibify = require('csslibify');
let csslib = csslibify('thepkg');
csslib.imp('.foo{size:11} .bar{size:12} .foo > .bar{color:red}');
csslib.imp('.baz{size:13}');
csslib.imp('div{color:red}');
csslib.imp('*{size:16}');
let css = csslib.get('.baz');
//=> .thepkg---baz{size:13}
css = csslib.get('.foo', '.bar');
//=> .thepkg---foo{size:11} .thepkg---bar{size:12} .thepkg---foo > .thepkg---bar{color:red}
css = csslib.get( 'div', '.foo', '.bar');
//=> .thepkg---foo{size:11} .thepkg---bar{size:12} .thepkg---foo > .thepkg---bar{color:red} div{color:red}
css = csslib.get( 'div', '.foo', '.bar', {universal: true});
//=> .thepkg---foo{size:11} .thepkg---bar{size:12} .thepkg---foo > .thepkg---bar{color:red} div{color:red} *{size:16}
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo{size:1}');
csslib.imp('.bar{size:2}');
let result = csslib.get( '.foo', '.bar' );
/*
// result:
.pkg---foo{size:1}
.pkg---bar{size:2}
*/
let csslibify = require('csslibify');
let csslib = csslibify();
csslib.imp('.foo{size:1}');
csslib.imp('.bar{size:2}');
let result = csslib.get( '.foo', '.bar' );
/*
// result:
.foo{size:1}
.bar{size:2}
*/
let csslibify = require('csslibify');
let csslib = csslibify();
csslib.imp('.foo{size:1}');
csslib.imp('.foo{size:1}');
csslib.imp('.foo{size:1}');
let result = csslib.get( '.foo' );
/*
// result:
.foo{size:1}
*/
let csslibify = require('csslibify');
let csslib = csslibify();
csslib.imp('.foo{size:1}');
csslib.imp('.bar{size:2}');
csslib.imp('.baz{size:3}');
let result = csslib.get( '.baz' );
/*
// result:
.baz{size:3}
*/
let csslibify = require('csslibify');
let csslib = csslibify();
csslib.imp('.foo{size:1}');
csslib.imp('.bar .baz{size:2}');
csslib.imp('.baz{size:3}');
let result = csslib.get( '.baz' );
/*
// result:
.baz{size:3}
*/
let csslibify = require('csslibify');
let csslib = csslibify();
csslib.imp('.foo{size:1}');
csslib.imp('.bar .baz{size:2}');
csslib.imp('.baz{size:3}');
let result = csslib.get( '.bar', '.baz' );
/*
// result:
.bar .baz{size:2}
.baz{size:3}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo{size:1} .bar{size:2} .foo:not(.bar){size:3}');
let result = csslib.get( '.foo' );
/*
// result:
.pkg---foo{size:1}
.pkg---foo:not(.pkg---bar){size:3}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo{size:1} .bar{size:2} .foo:not(.bar){size:3}');
let result = csslib.get( '.bar' );
/*
// result:
.pkg---bar{size:2}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo{size:1} .bar{size:2} .foo:not(.bar){size:3}');
let result = csslib.get( '.foo', '.bar' );
/*
// result:
.pkg---foo{size:1}
.pkg---bar{size:2}
.pkg---foo:not(.pkg---bar){size:3}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo,.bar{size:1} .bar,.baz{color:red}');
let result = csslib.get( '.foo' );
/*
// result:
.pkg---foo{size:1}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo,.bar{size:1} .bar,.baz{color:red}');
let result = csslib.get( '.foo', '.bar' );
/*
// result:
.pkg---foo{size:1}
.pkg---bar{size:1}
.pkg---bar{color:red}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('@media (min-width: 768px) { .foo,.bar{margin: 0} }');
let result = csslib.get( '.foo' );
/*
// result:
@media (min-width: 768px) { .pkg---foo{margin: 0} }
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('@media (min-width: 768px) { .foo,.bar{margin: 0} }');
let result = csslib.get( '.foo', '.bar' );
/*
// result:
@media (min-width: 768px) { .pkg---foo{margin: 0} }
@media (min-width: 768px) { .pkg---bar{margin: 0} }
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
.bar {
animation:foo 5s;
}
.baz {
size:14;
}
`);
let result = csslib.get( '.bar' );
/*
// result:
.pkg---bar{animation:pkg---foo 5s}
@keyframes pkg---foo{
0% {background:red}
to {background:yellow}
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
.bar {
animation-name:foo;
animation-duration: 5s;
}
.baz {
size:14;
}
`);
let result = csslib.get( '.bar', '.baz' );
/*
// result:
.pkg---bar{
animation:pkg---foo;
animation-duration: 5s
}
.pkg---baz{size:14}
@keyframes pkg---foo{
0% {background:red}
to {background:yellow}
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
@media (min-width: 768px) {
.bar {
animation:foo 5s;
}
}
.baz {
size:14;
}
`);
let result = csslib.get( '.bar' );
/*
// result:
@keyframes pkg---foo{
0% {background:red}
to {background:yellow}
}
@media (min-width: 768px) {
.pkg---bar{animation:pkg---foo 5s}
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
@media (min-width: 768px) {
.bar {
animation-name:foo;
animation-duration: 5s;
}
}
.baz {
size:14;
}
`);
let result = csslib.get( '.bar', '.baz' );
/*
// result:
.pkg---baz{size:14}
@keyframes pkg---foo{
0% {background:red}
to {background:yellow}
}
@media (min-width: 768px) {
.pkg---bar{
animation:pkg---foo;
animation-duration: 5s
}
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
.bar {
animation-name:foo;
animation-duration: 5s;
}
.baz {
size:14;
}
`);
let result = csslib.get( '.baz' );
/*
// result:
.pkg---baz{size:14}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@keyframes foo{
0% {background:red}
to {background:yellow}
}
@supports (position: sticky) {
.bar {
animation:foo 5s;
}
}
.baz {
size:14;
}
`);
let result = csslib.get( '.bar' );
/*
// result:
@keyframes pkg---foo {
0% {background: red}
to {background: yellow}
}
@supports (position: sticky) {
.pkg---bar{animation:pkg---foo 5s}
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('.foo{size:1}');
let result = csslib.get( '.foo', {rename: (pkg,name) => name + '-----' + pkg} );
/*
// result:
.foo-----pkg{size:1}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('a{size:1} .foo div{size:2}');
let result = csslib.get( 'a' );
/*
// result:
a{size:1}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('@media (min-width: 768px) { a{size:1} .foo div{size:2} }');
let result = csslib.get( 'div' );
/*
// result:(blank)
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('a{size:1} .foo div{size:2}');
let result = csslib.get( 'div' );
/*
// result:(blank)
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('a{size:1} .foo div{size:2}');
let result = csslib.get( 'div', '.foo' );
/*
// result:
.pkg---foo div{size:2}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('@media (min-width: 768px) { a{size:1} .foo div{size:2} }');
let result = csslib.get( 'div', '.foo' );
/*
// result:
@media (min-width: 768px) { .pkg---foo div{size:2} }
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp(`
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),
url("../webfonts/fa-solid-900.woff2") format("woff2"),
url("../webfonts/fa-solid-900.woff") format("woff"),
url("../webfonts/fa-solid-900.ttf") format("truetype"),
url("../webfonts/fa-solid-900.svg#fontawesome") format("svg");
}
.fa,
.fas {
font-family: 'Font Awesome 5 Free';
font-weight: 900;
}
`);
let result = csslib.get( '.fa' );
/*
// result: (注:实际url资源会被复制并哈希化文件名,默认路径改为资源文件的绝对路径)
.pkg---fa {
font-family: 'Font Awesome 5 Free';
font-weight: 900;
}
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),
url("../webfonts/fa-solid-900.woff2") format("woff2"),
url("../webfonts/fa-solid-900.woff") format("woff"),
url("../webfonts/fa-solid-900.ttf") format("truetype"),
url("../webfonts/fa-solid-900.svg#fontawesome") format("svg");
}
*/
let csslibify = require('csslibify');
let csslib = csslibify('pkg');
csslib.imp('article,aside { display: block; } [title]{color:red} * {box-sizing: border-box;}');
let result = csslib.get( 'article' );
/*
// result:
* {box-sizing: border-box;}
[title]{color:red}
article { display: block; }
*/
Linksnpm-packages https://github.com/gotoeasy/npm-packagesFAQs
一个库化CSS样式的工具
We found that csslibify 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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.