gulp动态打包

我的项目结构如下:

-mobile
    -css
        -index.css
        -news.css
-product
    -css
        -index.css
        -content.css

gulp打包方案如下:

/***********单一模块打包css**************/
gulp.task('soleDemoCss',function(){
    var singPackPath=require('./singpackpath.json');//单一模块路径
    var pathArr=singPackPath.path.split('\\');
    var demoName=pathArr[pathArr.length-2];
    var demoPath=path.resolve(process.cwd(), 'src/public/css/'+demoName);//等位到相对应的目录
    var demoCssNames=fs.readdirSync(demoPath);                           //返回文件数组
    var subductionCssNames=[];
    for (var i=0;i<demoCssNames.length;i++){
        subductionCssNames.push(demoCssNames[i].slice(0,demoCssNames[i].lastIndexOf("_")))  //截取每个文件"_"前的文件名
    }
    var deWeight=[];
    var deWeightObj={};
    for (var j=0;j<subductionCssNames.length;j++){                      //文件名去重
        if (deWeightObj[subductionCssNames[j]]){
        }else {
            deWeightObj[subductionCssNames[j]]=1
            deWeight.push(subductionCssNames[j]);
        }
    }
    var twoArr=[]
    for (var f=0;f<deWeight.length;f++){                              //根据不同的去重后的文件名称生成相对应的路径
        twoArr[f]=[]
        for (var s=0;s<demoCssNames.length;s++){
            if (demoCssNames[s].slice(0,demoCssNames[s].lastIndexOf("_"))==deWeight[f]){
                twoArr[f].push('./src/public/css/'+demoName+'/'+demoCssNames[s])
            }
        }
    }
   for (var l=0;l<twoArr.length;l++){
       gulp.src(entrance(twoArr[l]))//需要压缩的目标文件夹
           .pipe(concat(twoArr[l][0].slice(twoArr[l][0].lastIndexOf('/')+1,twoArr[l][0].lastIndexOf('_'))+'.min.css'))//合并css文件
           // .pipe(minifycss())//压缩css
           .pipe(gulp.dest('app/dist/public/css/'+demoName+'/'));//输出目录
           //.on('end', done);
   }
});

如果把mobile和product看做单个模块,有办法动态创建方法,比如说:

gulp.task("moblle"...)或者gulp.task("product")这种动态方法,

实现我在输入gulp mobile或者输入gulp product实现对我想要的那个模块单独打包呢?

阅读 2.6k
2 个回答

node有一个获取你命令行输入的内容的方法,你可以用node先获取你命令行的方法,然后在定位到你的模块下面进行打包。类似这种:

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进