使用gulp进行简单的自动化运行调试

作者: a8f5925e472d | 来源:发表于2017-04-14 14:38 被阅读1863次

【原创博文,转载请注明出处!】

安装node.JS

搭建gulp的运行环境需要用到npm,所以我们需要先安装node.JS。

下载node.JS

【下载地址】:
【Node.JS官网】:https://nodejs.org/en/
【node.JS中文网】:http://nodejs.cn/download/

进入下载页面,找到系统对应的版本进行下载即可。
安装结束后,打开终端控制台,输入:

node -v
验证nodeJS是否安装成功

然后回车,控制台上回显示node的版本信息,如果没有显示,可以注销用户,或者重启计算机试试。

配置cnpm

由于npm安装插件是从http://registry.npmjs.org下载对应的插件包(该网站服务器位于国外,所以经常下载缓慢或出现异常)。所以咱们乐于助人的淘宝团队在国内搭建了一个国内服务器,实现了cnpm。

服务器地址是:http://npm.taobao.org

这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

配置cnpm的方式也很简单,在终端控制台输入:

npm install cnpm -g --registry=https://registry.npm.taobao.org

安装完成后,最好关闭终端控制台,然后重新打开使用。直接使用可能会引发错误。

cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm

使用“cnpm -v”可以查看cnpm的版本:

cnpm -v
验证cnpm是否安装成功

全局安装gulp

为了能够在计算机上让gulp直行任务,所以我们需要全局安装gulp。在终端执行:

cnpm install gulp -g

安装完成后,我们可以同样通过命令查看是否安装成功:

gulp -v

由于我计算机上已经安装好了环境,这里就不截图演示了。

验证gulp是否安装成功

创建gulp项目

我使用gulp注意是为了在Cocos2d-JS游戏开发过程中避免频繁的切换浏览器刷新,所以以下都是通过该项目进行描述。

新建package.json文件

首先,在控制台cd到指定项目的根目录:

进入项目根目录

然后输入:

cnpm init
创建package.json

终端停止在上图所示的位置,这时候需要手动输入项目名称,如果直接回车,项目名称将会默认设置为光标前面那个括号里面的内容。

创建package.json

其实没有什么特殊的,我都是直接回车使用默认。
在“entry point: (main.js)”这一项的时候,我将名称改为“gulpfile.js”。主要是因为通常的JS项目一般都会包含“main.js”文件,为了区分开,所以这里使用了自定义的名称。

当光标停止在“Is this ok?(yes)”后面时,输入“y”回车即可。

package.json文件内容介绍

完成以上步骤,在项目的根目录就自动生成了一个文件,内容大概如下所示(根据个人配置会有一定的出入):

{
  "name": "test",           // 项目名称(必须)
  "version": "1.0.0",       // 项目版本(必须)
  "description": "this is a gulp demo.",   // 项目描述(必须)
  "main": "gulpfile.js",    // 项目主文件
  "repository": {           //项目资源库
    "type": "git",
    "url": "http://10.1.0.103:3000/2d/com.sinyee.babybus.wonderland"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": {               //项目作者信息
    "name": "zengbinsi",
    "email": "zengbinsi@hotmail.com"
  },
  "license": "ISC",         //项目许可协议
  "devDependencies": {      //项目依赖的插件
    "gulp": "^3.9.1"
  }
}

本地安装gulp

为了能正常使用,需要在项目下再次安装gulp。首先,确保终端控制台的工作空间在项目的根目录,然后执行:

cnpm install gulp --save-dev
本地安装gulp

安装完成后,会在项目的根目录生成一个“node_modules”的文件夹,所有通过npm(cnpm)本地化安装的模块文件都会在这个文件夹里面。

编写gulpfile.js文件

在项目的根目录新建一个“gulpfile.js”文件,文件名主要是根据pacakge.json里面配置的名称来定的,只有保证两边一致即可。

创建gulpfile.js

在gulpfile.js中编辑一下代码:

var gulp        = require('gulp');
var browserSync = require('browser-sync');

// 定义一个名为run的任务
gulp.task('run', ()=>{
    console.log('运行文件检测!');
    browserSync.init({
        server : "./"
    });

    // 检测当前项目的所有文件是否有变化
    gulp.watch('*').on('change', browserSync.reload);
    gulp.watch('src/**/*').on('change', browserSync.reload);
    gulp.watch('res/**/*').on('change', browserSync.reload);
});

由于刷新浏览器需要用到“browserSync”,所以我们一起讲其require进来。

运行gulp

在VSCode上执行任务

运行gulp任务的方法有好多种,我开发Cocos2d-JS是使用VSCode进行代码编辑的,在VSCode上,通过Command + P可以显示一个输入框,在输入框中输入“task ”后面跟一个空格,输入框下面的面板就会显示当前项目所有的gulp任务。选择对应的任务即可,当任务启动后,被gulp.watch()监听的目录文件内容发生变化时,浏览器就会进行一次刷新。所有每当写好一句代码,按下保存的时候,浏览器就会自动重新运行项目(需要两个屏幕进行开发,这样才够爽-_-)。

VSCode执行任务

在终端执行任务

在公司,开发是使用Quick-Cocos2d-X的,游戏效果也都是在quick-x-player上查看,这时候我的gulp是在终端控制台启动的。命令如下:

gulp 任务名称 

但是在执行命令的时候,确保终端控制台的工作空间在项目的根目录。

终端执行任务

我终端执行的那个gulpfile.js文件内容如下(仅供参考):


let gulp        = require('gulp');
let playerPro   = null;

// 重启模拟器
function restartPlayer() {
    console.log('文件内容变更,重启游戏...');
    // 要打开的项目目录
    let workdir = '/Users/zengbinsi/workspace/babybus/ProjectSublime/wonderland_release',
    // 要打开的项目文件
    file        = 'scripts/main.lua',
    // 模拟器位置
    quickApp    = '/Users/zengbinsi/workspace/babybus/ProjectSublime/main/bin/mac/app/quick-x-player.app/Contents/MacOS/quick-x-player';
    // 打开模拟器命令
    let cmd     = quickApp + ' -workdir ' + workdir + ' -file ' + file + ' -offset {1000, 0} -scale 1 -size 960x540 -console -write-debug-log';
    let exec    = require('child_process').exec;
    let spawn   = require('child_process').spawn;

    // 根据进程句柄关闭模拟器
    if (playerPro !== null) {
        playerPro.kill();
        playerPro = null;
    }

    // 重新打开模拟器, 返回一个进程句柄  
    playerPro   = exec(cmd, function (err, stdout, stderr) {
        if (err) {
            // 如果有引发一场,关闭进程  
            if (playerPro !== null) {
                playerPro.kill();
                playerPro = null;
            }
        }
    });
}


// 定义任务
gulp.task('debugToPlayer', () => {
    console.log('运行debugToPlayer命令,监听文件变化...');
    // 检测当前项目的所有文件是否有变化
    // gulp.watch('*').on('change', restartPlayer);
    gulp.watch('scripts/**/*').on('change', restartPlayer);
    gulp.watch('res/**/*').on('change', restartPlayer);
});

这时候,一旦项目文件内容被更改,模拟器就会进行一次刷新。

相关文章

  • 使用gulp进行简单的自动化运行调试

    【原创博文,转载请注明出处!】 参考资料:http://www.gulpjs.com.cn/ 安装node.JS ...

  • 从使用到案例分析如何使用Gulp

    我们在《自动化构建篇之Gulp(一)》中已经初步介绍过了Gulp以及Gulp的简单的使用方式,了解了Gulp中的任...

  • 【前端工具】gulp构建工具的基本使用

    gulp是什么? gulp是前端开发中经常使用的自动化构建工具。自动化构建又是什么? 简单来说,一个完整的项目需要...

  • gulp 前端自动化实践

    gulp 简介 gulp是一个基于Nodejs的自动化任务运行器,能自动化地完成javascript/coffee...

  • 超简单 gulp之 gulp-sequence 按顺序逐个同步地

    超简单 gulp之 gulp-sequence 按顺序逐个同步地运行任务 我们在使用gulp的时候,有时候需要按顺...

  • gulp 基本的使用

    今天说说自动化构建工具gulp的使用,gulp其实是一个非常简单的自动化构建工具,它的作用有编译代码、压缩代码、热...

  • gulp

    gulp gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sa...

  • 自动任务管理工具 -- gulp

    Gulp的安装和使用 Gulp是一款简单的自动任务管理工具。进入项目目录,运行下面的命令。 Gulp需要全局安装 ...

  • gulp个人总结

    gulp 前言 gulp是基于Nodejs的自动任务运行器,它能自动化地完成javascript/sass/les...

  • ① - ES6 项目创建

    任务自动化gulp什么是任务自动化什么是gulpgulp的作用了解如何使用gulp完成任务自动化参考:http:/...

网友评论

    本文标题:使用gulp进行简单的自动化运行调试

    本文链接:https://www.haomeiwen.com/subject/hbbwattx.html