gulp 简单使用(打包js文件到目标文件,重命名,统一目标文件,混淆文件)

首先贴出官网:gulp

类似webpack的打包软件,对js文件和css文件进行打包

首先创建一个gulp项目,具体的可以看看gulp官网的入门指南,构建完项目之后,创建一个文件夹: gulpfile.js文件夹

一:打包js文件

在里面创建index.js文件,主要是gulp的入口文件,然后创建一个js文件夹,创建一些源文件,用于打包测试

gulpfile.js文件夹下的文件:backStream.js

const {src,dest,EventEmittter,task} = require("gulp");
const rename = require("gulp-rename");
const concat = require("gulp-concat");
const {exec} = require("child_process");
// 混淆操作
const uglify = require("gulp-uglify");
const babel = require("gulp-babel");
const backStream = function() {

};
// 返回流
backStream.prototype.streamTask = function() {
    // src和dest之间可以对文件进行操作 大部分是用gulp插件进行完成
    // 源文件-->输入到输入输出管道流-->输出到目标文件 --> 混淆设置 --> 重命名文件 ---> 输出到目标文件 
    return src('js/*.js').pipe(dest('output/js')).pipe(uglify()).pipe(rename({extname: '.min.js'})).pipe(dest('output/js'));
}
// 返回promise
backStream.prototype.promiseTask = function() {
    return new Promise((resolve,reject)=> {
    setTimeout(() => {
        console.log("three seconds is end");
        resolve();
    },3000);
})
}
// 返回事件派发
backStream.prototype.eventEmitterTask = function() {
    const emitter = new EventEmittter();
    setTimeout(() => emitter.emit("finish"),250);
    return emitter;
} 
// 返回子线程
backStream.prototype.childProcessTask = function() {
    return exec("date");
}

module.exports = backStream;

 然后index.js文件:

const {series,parallel,src,dest,task} = require("gulp");
const backStream = require("./backStream");
function clean(cb) {
    cb();
}
function dev(cb) {
    console.log("dev");
    cb();

}
function release(cb) {
    console.log("release");
    cb();
}
function cut(cb) {
    cb();
}
function jsBind(cb) {
    console.log("js bind");
    cb();
}
function promiseT() {
    return new Promise((resolve,reject)=> {
        setTimeout(() => {
            console.log("three seconds is end");
            resolve();
        },3000);
    })
}

function cssBind(cb) {
    console.log("css bind");
    cb();
}
function publish(cb) {
    cb();
}
if(process.env.NODE_ENV === "production") {
    exports.release = release;
} else {
    exports.dev = dev;
}

// 利用exprots 导出的任务为公开任务
exports.cut = cut;
console.log("backStream is ",backStream);
let backInstance = new backStream();
// task(['jscompress']);
// 私有任务列表 串行里面包括并行
exports.default = series(clean,cut,parallel(jsBind,cssBind),publish,promiseT,backInstance.streamTask);

打包之前源文件不能用es6语法,比如let,const等等。 否则会报错。

 如果配置没有什么问题的话,然后在根目录运行gulp命令就会正确的进行打包

 

 二:打包ts文件(包括ts源文件,js文件,xx.min.js)

1:创建src文件夹:其中包括main.ts测试文件

2:创建tsconfig.json:

{
    "files": [
        "js/src/main.ts"
    ],
    "compilerOptions": {
        "noImplicitAny": true,
        "target": "es5"
    }
}

 打包多个文件可以在files数组中加入多个文件就可以了。

 3:npm install gulp-typescript --save-dev

4:在gulpfile.js文件中加入:

const ts = require("gulp-typescript");
const tsProject = ts.createProject('tsconfig.json');


function tsTest() {
    return tsProject.src().pipe(dest('output/ts')).pipe(tsProject()).js.pipe(dest('output/ts')).pipe(uglify()).pipe(rename({extname: '.min.js'})).pipe(dest('output/ts'));
}

 可以看到正确打包完毕

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值