我的项目结构如下:
-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
实现对我想要的那个模块单独打包呢?
node有一个获取你命令行输入的内容的方法,你可以用node先获取你命令行的方法,然后在定位到你的模块下面进行打包。类似这种: