@adamlui/scss-to-css 1.7.10 → 1.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.min.js +20 -14
- package/dist/scss-to-css.min.js +8 -3
- package/docs/README.md +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
<a href="https://www.npmjs.com/package/@adamlui/scss-to-css"><img height=31 src="https://img.shields.io/npm/dm/%40adamlui%2Fscss-to-css?logo=npm&color=af68ff&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
31
31
|
<a href="#%EF%B8%8F-mit-license"><img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
32
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/scss-to-css-1.7.
|
|
32
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/scss-to-css-1.7.12"><img height=31 src="https://img.shields.io/badge/Latest_Build-1.7.12-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
33
33
|
<a href="https://www.npmjs.com/package/@adamlui/scss-to-css?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fscss-to-css?style=for-the-badge&logo=ebox&logoColor=white&color=blue&labelColor=464646"></a>
|
|
34
34
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:scss-to-css/src/scss-to-css.js"><img height=31 src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsonarcloud.io%2Fapi%2Fmeasures%2Fcomponent%3Fcomponent%3Dadamlui_js-utils%3Ascss-to-css%2Fsrc%2Fscss-to-css.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
35
35
|
<a href="https://github.com/toolleeo/cli-apps#conversion"><img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
package/dist/cli.min.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
/**
|
|
3
|
+
* © 2024 Adam Lui & contributors under the MIT license.
|
|
4
|
+
* Source: https://github.js-utils.com/tree/main/scss-to-css/src
|
|
5
|
+
* Documentation: https://github.js-utils.com/tree/main/scss-to-css/docs
|
|
6
|
+
*/
|
|
7
|
+
const pkgName="@adamlui/scss-to-css",docURL="https://github.com/adamlui/js-utils/tree/main/scss-to-css#-command-line-usage",scssToCSS=require(__dirname.match(/src/)?"./scss-to-css":"./scss-to-css.min"),fs=require("fs"),path=require("path"),execSync=require("child_process")["execSync"],nc="[0m",br="[1;91m",by="[1;33m",bg="[1;92m",config={},argRegex={dryRun:/^--?(?:n|dry-?run)$/,includeDotFolders:/^--?(?:dd?|(?:include-?)?dot-?(?:folder|dir(?:ector(?:y|ie))?)s?=?(?:true|1)?)$/,noSourceMaps:/^--?(?:S|(?:exclude|disable|no)-?so?u?rce?-?maps?|so?u?rce?-?maps?=(?:false|0))$/,noRecursion:/^--?(?:R|(?:disable|no)-?recursi(?:on|ve)|recursi(?:on|ve)=(?:false|0))$/,noMinify:/^--?(?:M|(?:disable|no)-?minif(?:y|ication)|minif(?:y|ication)=(?:false|0))$/,quietMode:/^--?q(?:uiet)?(?:-?mode)?$/,help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/};if(process.argv.forEach(s=>{var e;s.startsWith("-")&&((e=Object.keys(argRegex).find(e=>argRegex[e].test(s)))?config[e]=!0:(console.error(`
|
|
8
|
+
${br}ERROR: Arg [${s}] not recognized.`+nc),console.info(`
|
|
9
|
+
${by}Valid arguments are below.`+nc),printHelpSections(["configOptions","infoCmds"]),printHelpCmdAndDocURL(),process.exit(1)))}),process.argv.some(e=>argRegex.help.test(e)))printHelpSections();else if(process.argv.some(e=>argRegex.version.test(e))){const f=execSync(`npm view ${pkgName} version`).toString().trim()||"none";let e,s=process.cwd();for(;"/"!=s;){const i=path.join(s,"package.json");if(fs.existsSync(i)){const j=require(i);e=(j.dependencies?.[pkgName]||j.devDependencies?.[pkgName])?.match(/(\d+\.\d+\.\d+)/)[0]||"none";break}s=path.dirname(s)}console.info(`
|
|
10
|
+
Global version: `+f),console.info("Local version: "+e)}else{const[k="",l=""]=process.argv.slice(2).filter(e=>!e.startsWith("-")).map(e=>e.replace(/^\/*/,"")),m=path.resolve(process.cwd(),k),n=(k&&!fs.existsSync(m)&&(console.error(`
|
|
11
|
+
${br}Error: First argument can only be an existing file or directory.`+`
|
|
12
|
+
'${m}' does not exist.`+nc+`
|
|
7
13
|
|
|
8
|
-
${
|
|
9
|
-
» scss-to-css . output.min.css`+
|
|
10
|
-
${
|
|
11
|
-
No SCSS files will be compiled.`+
|
|
12
|
-
${
|
|
13
|
-
`+
|
|
14
|
-
${
|
|
15
|
-
${
|
|
16
|
-
`+(
|
|
14
|
+
${bg}Example valid command:
|
|
15
|
+
» scss-to-css . output.min.css`+nc),printHelpCmdAndDocURL(),process.exit(1)),k.endsWith(".scss")?[m]:scssToCSS.findSCSS(m,{recursive:!config.noRecursion,verbose:!config.quietMode}));if(config.dryRun)0<n.length?(console.info(`
|
|
16
|
+
${by}SCSS files to be compiled:`+nc),n.forEach(e=>console.info(e))):console.info(by+`
|
|
17
|
+
No SCSS files will be compiled.`+nc);else{const r=[],s=n.map(e=>{var s=scssToCSS.compile(e,{minify:!config.noMinify,sourceMaps:!config.noSourceMaps,verbose:!config.quietMode});return s.error&&r.push(e),s}).filter(e=>!e.error);if(s?.forEach(({code:e,srcMap:s,srcPath:o})=>{var n=path.join(path.dirname(o),/(?:src|s[ac]ss)$/.test(path.dirname(o))?"../"+(l||"css"):l.endsWith(".css")?path.dirname(l):l||"css"),o=(l.endsWith(".css")&&k.endsWith(".scss")?path.basename(l).replace(/(\.min)?\.css$/,""):path.basename(o,".scss"))+".min.css",o=path.join(n,o);fs.existsSync(n)||fs.mkdirSync(n,{recursive:!0}),fs.writeFileSync(o,e,"utf8"),config.noSourceMaps||fs.writeFileSync(o+".map",JSON.stringify(s),"utf8")}),0<s?.length){const C=1<s.length?"s":"";printIfNotQuiet(`
|
|
18
|
+
${bg}Compilation complete!`+nc),printIfNotQuiet(s.length+" CSS file"+C+(config.noSourceMaps?"":` + ${s.length} source map`+C)+" generated.")}else printIfNotQuiet(by+"No SCSS files processed."+nc);0<r.length&&(printIfNotQuiet(`
|
|
19
|
+
`+br+r.length+" file"+(1<r.length?"s":"")+" failed to compile:"+nc),r.forEach(e=>printIfNotQuiet(e)))}}function printHelpSections(e=["cmdFormat","pathArgs","configOptions","infoCmds"]){const s={cmdFormat:[`
|
|
20
|
+
${by}scss-to-css [inputPath] [outputPath] [options]`+nc],pathArgs:["\nPath arguments:"," [inputPath] Path to SCSS file or directory containing SCSS files to be compiled, relative to the current working directory."," [outputPath] Path to file or directory where CSS + sourcemap files will be stored, relative to original file location (if not provided, css/ is used)."],configOptions:["\nConfig options:"," -n, --dry-run Don't actually compile the file(s), just show if they will be processed."," -d, --include-dotfolders Include dotfolders in file search."," -S, --no-source-maps Prevent source maps from being generated."," -M, --no-minify Disable minification of output CSS."," -R, --no-recursion Disable recursive file searching."," -q, --quiet Suppress all logging except errors."],infoCmds:["\nInfo commands:"," -h, --help Display help screen."," -v, --version Show version number."]};e.forEach(e=>{s[e]?.forEach(e=>{{const n=process.stdout.columns||80,i=[],s=e.match(/\S+|\s+/g);let o="";s.forEach(e=>{var s=n-(0==i.length?0:30);o.length+e.length>s&&(i.push(0==i.length?o:o.trimStart()),o=""),o+=e}),i.push(0==i.length?o:o.trimStart()),i.forEach((e,s)=>console.info(0==s?e:" ".repeat(30)+e))}})})}function printHelpCmdAndDocURL(){console.info(`
|
|
21
|
+
${by}For more help, type 'scss-to-css --help' or visit
|
|
22
|
+
`+(docURL+nc))}function printIfNotQuiet(e){config.quietMode||console.info(e)}
|
package/dist/scss-to-css.min.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* © 2024 Adam Lui & contributors under the MIT license.
|
|
4
|
+
* Source: https://github.js-utils.com/tree/main/scss-to-css/src
|
|
5
|
+
* Documentation: https://github.js-utils.com/tree/main/scss-to-css/docs
|
|
6
|
+
*/
|
|
7
|
+
const fs=require("fs"),path=require("path"),sass=require("sass");function findSCSS(o,r={}){var e="https://github.com/adamlui/js-utils/tree/main/scss-to-css#findscsssearchdir-options",s={recursive:!0,verbose:!0,dotFolders:!1};if("string"!=typeof o)console.error("findSCSS() » ERROR: 1st arg <searchDir> must be a string."),console.info("findSCSS() » For more help, please visit "+e);else{var i=path.resolve(process.cwd(),o);if(fs.existsSync(i)){if(validateOptions(r,s,e,"findSCSS('assets/scss', { verbose: false, dotFolders: true })")){r={...s,...r};const n=fs.readdirSync(o),t=[];return r.verbose&&!r.isRecursing&&console.info("findSCSS() » Searching for SCSS files..."),n.forEach(e=>{var s=path.resolve(o,e);fs.statSync(s).isDirectory()&&"node_modules"!=e&&(r.dotFolders||!e.startsWith("."))&&r.recursive?t.push(...findSCSS(s,{...r,isRecursing:!0})):e.endsWith(".scss")&&t.push(s)}),!r.isRecursing&&r.verbose&&(console.info("findSCSS() » Search complete! "+(0==t.length?"No":t.length)+` file${0==t.length||1<t.length?"s":""} found.`),"compile"==findSCSS.caller.name||/cli(?:\.min)?\.js$/.test(require.main.filename)||console.info("findSCSS() » Check returned array.")),r.isRecursing||0<t.length?t:[]}}else console.error("findSCSS() » ERROR: 1st arg <searchDir> must be an existing directory."),console.error(`findSCSS() » ${i} does not exist.`),console.info("findSCSS() » For more help, please visit "+e)}}function compile(e,o={}){var s="https://github.com/adamlui/js-utils/tree/main/scss-to-css#compileinputpath-options",r={recursive:!0,verbose:!0,dotFolders:!1,minify:!0,sourceMaps:!0};if("string"!=typeof e)console.error("compile() » ERROR: 1st arg <inputPath> must be a string."),console.info("compile() » For more help, please visit "+s);else if(e=path.resolve(process.cwd(),e),fs.existsSync(e)){if(validateOptions(o,r,s,"compile('assets/scss', { recursive: false, minify: false })")){const n={style:(o={...r,...o}).minify?"compressed":"expanded",sourceMap:o.sourceMaps};if(fs.existsSync(e)){if(!e.endsWith(".scss"))return r=findSCSS(e,{recursive:o.recursive,verbose:o.verbose,dotFolders:o.dotFolders})?.map(e=>{o.verbose&&console.info(`compile() » Compiling ${e}...`);try{var s=sass.compile(e,n);return{code:s.css,srcMap:s.sourceMap,srcPath:e}}catch(e){return console.error(`
|
|
3
8
|
compile() » ERROR: ${e.message}
|
|
4
|
-
`),{error:e}}}).filter(e=>!e.error),
|
|
9
|
+
`),{error:e}}}).filter(e=>!e.error),o.verbose&&(0<r.length?console.info("compile() » Compilation complete. Check returned object."):console.info("compile() » No SCSS files processed.")),r;o.verbose&&console.info(`compile() » Compiling ${e}...`);try{var i=sass.compile(e,n);return o.verbose&&!/cli(?:\.min)?\.js$/.test(require.main.filename)&&console.info("compile() » Compilation complete. Check returned object."),{code:i.css,srcMap:i.sourceMap,srcPath:path.resolve(process.cwd(),e)}}catch(e){return console.error(`
|
|
5
10
|
compile() » ERROR: ${e.message}
|
|
6
|
-
`),{error:e}}}}}else console.error("compile() » ERROR: 1st arg <inputPath> must be an existing directory or file."),console.error(`compile() » ${e} does not exist.`),console.info("compile() » For more help, please visit "+
|
|
11
|
+
`),{error:e}}}}}else console.error("compile() » ERROR: 1st arg <inputPath> must be an existing directory or file."),console.error(`compile() » ${e} does not exist.`),console.info("compile() » For more help, please visit "+s)}function validateOptions(e,s,o,r){const i=JSON.stringify(s,null,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),n=Object.keys(s).join(", "),t=Object.keys(s).filter(e=>"boolean"==typeof s[e]),c=Object.keys(s).filter(e=>Number.isInteger(s[e])),l=(validateOptions.caller?.name||"validateOptions")+"() » ";var a=()=>{console.info(l+`Valid options: [ ${n} ]`),console.info(l+"If omitted, default settings are: "+i)},p=()=>{console.info(l+"For more help, please visit "+o)};if("object"!=typeof e)return console.error(l+"ERROR: [options] can only be an object of key/values."),console.info(l+"Example valid call: "+r),a(),p(),!1;for(const f in e){if("isRecursing"!=f&&!Object.prototype.hasOwnProperty.call(s,f))return console.error(l+`ERROR: \`${f}\` is an invalid option.`),a(),p(),!1;if(t.includes(f)&&"boolean"!=typeof e[f])return console.error(l+`ERROR: [${f}] option can only be \`true\` or \`false\`.`),p(),!1;if(c.includes(f)&&(e[f]=parseInt(e[f],10),isNaN(e[f])||e[f]<1))return console.error(l+`ERROR: [${f}] option can only be an integer > 0.`),p(),!1}return!0}module.exports={compile:compile,find:findSCSS,findSCSS:findSCSS};
|
package/docs/README.md
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
<a href="https://www.npmjs.com/package/@adamlui/scss-to-css"><img height=31 src="https://img.shields.io/npm/dm/%40adamlui%2Fscss-to-css?logo=npm&color=af68ff&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
31
31
|
<a href="#%EF%B8%8F-mit-license"><img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
32
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/scss-to-css-1.7.
|
|
32
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/scss-to-css-1.7.12"><img height=31 src="https://img.shields.io/badge/Latest_Build-1.7.12-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
33
33
|
<a href="https://www.npmjs.com/package/@adamlui/scss-to-css?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fscss-to-css?style=for-the-badge&logo=ebox&logoColor=white&color=blue&labelColor=464646"></a>
|
|
34
34
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:scss-to-css/src/scss-to-css.js"><img height=31 src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsonarcloud.io%2Fapi%2Fmeasures%2Fcomponent%3Fcomponent%3Dadamlui_js-utils%3Ascss-to-css%2Fsrc%2Fscss-to-css.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
35
35
|
<a href="https://github.com/toolleeo/cli-apps#conversion"><img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adamlui/scss-to-css",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.12",
|
|
4
4
|
"description": "Recursively compile all SCSS files into minified CSS",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Adam Lui",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"scss-to-css": "dist/cli.min.js"
|
|
21
21
|
},
|
|
22
22
|
"directories": {
|
|
23
|
-
"lib": "
|
|
23
|
+
"lib": "./dist",
|
|
24
24
|
"doc": "./docs"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
28
|
-
"build": "
|
|
28
|
+
"build": "bash utils/build.sh",
|
|
29
29
|
"bump:patch": "bash utils/bump.sh patch",
|
|
30
30
|
"bump:minor": "bash utils/bump.sh minor",
|
|
31
31
|
"bump:major": "bash utils/bump.sh major",
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
"url": "https://js-utils.com/issues"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"sass": "^1.
|
|
54
|
+
"sass": "^1.75.0"
|
|
55
55
|
},
|
|
56
56
|
"funding": {
|
|
57
57
|
"type": "github",
|
|
58
58
|
"url": "https://github.com/sponsors/adamlui"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@adamlui/minify.js": "^1.5.
|
|
61
|
+
"@adamlui/minify.js": "^1.5.3"
|
|
62
62
|
}
|
|
63
63
|
}
|