Node.js 如何在“中获取文件列表”;npm运行<;脚本>&引用;然后把它传给另一个脚本?

Node.js 如何在“中获取文件列表”;npm运行<;脚本>&引用;然后把它传给另一个脚本?,node.js,npm,npm-scripts,Node.js,Npm,Npm Scripts,在我的package.json中,我运行的节点模块一次只能处理一个文件(我没有编写它)。例如: cleancss somefile.css -o somefile-min.css 我希望能够做到以下几点: printfilelist -dir /public/css -files *.css | cleancss {filepath}.{fileext} -o {filename}-min.css 有什么方法可以做到这一点吗?我最近遇到了一个类似的要求,即跨多个文件运行cleancss。最终

在我的package.json中,我运行的节点模块一次只能处理一个文件(我没有编写它)。例如:

cleancss somefile.css -o somefile-min.css
我希望能够做到以下几点:

printfilelist -dir /public/css -files *.css | cleancss {filepath}.{fileext} -o {filename}-min.css

有什么方法可以做到这一点吗?

我最近遇到了一个类似的要求,即跨多个文件运行
cleancss
。最终选择了与评论中讨论的解决方案类似的解决方案,即使用带有实用工具
node.js

npm脚本
“脚本”:{
“cleancss”:“glob\”public/css/***.css\“| node.scripts/cleancss.js”
},
请注意(添加到
package.json
)的初始用法,用于在将路径输送到
cleancss.js
之前获取路径

cleancss.js utitlity节点脚本如下所示(尽管相当初级!):

#/usr/bin/env节点
var fs=需要('fs');
var path=require('path');
var readline=require('readline');
var CleanCSS=require('clean-css');
var mkdirp=require('mkdirp');
var rl=readline.createInterface({
输入:process.stdin,
输出:null,
终端:错误
});
变量选项={
// ... https://www.npmjs.com/package/clean-css#constructor-选择权
// ... https://www.npmjs.com/package/clean-css#formatting-选择权
};
函数保存文件(输出路径,缩小){
fs.writeFile(输出路径,缩小,函数(错误){
如果(错误){
返回console.log(err);
}
});
}
函数路径部件(srcPath){
var ext=path.extname(srcPath),
name=path.basename(srcPath,ext),
dirPath=path.dirname(srcPath),
pathParts=dirPath.split(path.sep),
路径根;
pathParts.shift();
pathNoRoot=pathParts.join(path.sep);
返回{
分机:分机,,
姓名:姓名,,
pathNoRoot:pathNoRoot
};
}
函数缩小(srcPath、outputPath){
var输出=新的CleanCSS(选项).minify([srcPath]);
保存文件(outputPath、output.styles);
}
函数processPath(srcPath){
var outDir=process.env.npm_package_config_css_outDir|path.dirname(srcPath),
p=路径部件(srcPath),
newName=p.name+'.min'+p.ext,
mkDirPath,
输出路径;
if(process.env.npm\u package\u config\u css\u outdir){
mkDirPath=outDir+path.sep+p.pathNoRoot+path.sep;
mkdirp(mkDirPath,function(){
outputPath=mkDirPath+newName;
缩小(srcPath、outputPath);
});
}否则{
outputPath=outDir+path.sep+newName;
缩小(srcPath、outputPath);
}
}
rl.on('line',函数(srcPath){
进程路径(srcPath);
});
附加信息
  • 默认情况下,
    .min.css
    文件输出到与
    .css
    源文件相同的路径
  • 但是,如果需要更改输出目标,则可以使用
    package.json
    中的对象。以下示例将所有
    .css.min
    输出到
    /dist/
    路径:
  • “配置”:{
    “css_outdir”:“/dist”
    },
    “脚本”:{
    “cleancss”:“glob\”public/css/***.css\“| node.scripts/cleancss.js”
    },
    
  • cleancss.js
    使用
    config.css\u outdir
    复制/镜像目标文件夹中的
    .css
    源路径/子文件夹

  • 我对自动取款机一无所知,我曾想过写这样的东西,但从未写过。就我个人而言,我会构建一个使用工具jsapi的小Node.js脚本,并添加一个npm脚本
    Node.scripts/cleancss.js
    @RyanZim什么是工具jsapi?您有链接吗?尽管Unix工具在您的平台上可能不可用,但使用Unix工具(尤其是)应该很容易。