GULP的新功能-是否有必要将所有文件从src目录复制到项目的dist目录?

时间:2019-05-07 12:58:18

标签: php gulp

我已经使用GULP 4了一个多星期,之前从未使用过。 下面的代码是我已经使用了一周的时间,以便它可以完成我所要求的工作。 我的问题是,是否有必要将项目中的每个文件从src复制到dist目录,尤其是在更改时,因为我有60多个php文件,并且在更改时更新每个php文件并不能使我感到效率高。 首先,有必要在更改时将所有项目文件从src复制到dist。 其次,有没有一种方法可以仅更新src目录中已修改的一个文件? 过去,我没有考虑使用GULP之类的自动化工具。重点是在开发过程中使用此类工具以节省时间,以及有助于该原因的其他好处。 作为初学者,将需要一些时间来欣赏这些好处。 您可能会对我给出的代码进行任何改进,我们将不胜感激。 亲切的问候

const gulp = require('gulp');
const php = require('gulp-connect-php');
const sass = require('gulp-sass');
const uglify = require('gulp-uglify');
const lineec = require('gulp-line-ending-corrector');
const browserSync = require('browser-sync').create();

const styleSRC = './src/scss/**/*.scss';
const styleDIST = './dist/css';

const jsSRC = 'src/js/**/*.js';
const jsDIST = './dist/js';

const phpSRC = 'src/php/**/*.php';
const phpDIST = './dist/php';

const htmlSRC = 'src/html/**/*.html';
const htmlDIST = './dist/html';

function style()
{
    return gulp.src(styleSRC)
    .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
    .pipe(gulp.dest(styleDIST))
    .pipe(browserSync.stream());
}

function javascript() {
    return gulp.src(jsSRC)
    .pipe(uglify())
    .pipe(lineec())
    .pipe(gulp.dest(jsDIST));
  }

  function phpscript() {
    return gulp.src(phpSRC)
    .pipe(gulp.dest(phpDIST));
  }

function server()
{
    php.server({base:'./src/php', port:8010, keepalive:true});
}

function sync()
{
    browserSync.init({
        proxy: "http://lansdownelions/src/php/login.php",
        baseDir: './src/php',
        open: true,
        notify: false
    });
}

function watch()
{
    gulp.watch(styleSRC, style);
    gulp.watch(jsSRC, javascript);
    gulp.watch(jsSRC).on('change', browserSync.reload);
    gulp.watch(phpSRC, phpscript);
    gulp.watch(phpSRC).on('change', browserSync.reload);
    gulp.watch(htmlSRC).on('change', browserSync.reload);
}

exports.style = style;
exports.javascript = javascript;
exports.phpscript = phpscript;
exports.server = server;
exports.sync = sync;
exports.watch = watch;

var build = gulp.parallel(style, javascript, phpscript, sync, server, watch);
gulp.task('default', build);

1 个答案:

答案 0 :(得分:0)

根据帖子解决了我想要实现的目标。为此,我要做的就是用下面显示的额外代码行更改其中一个功能。 此更改的工作原理很吸引人,而好处是,dist子文件夹中的文件仅在日期/时间戳不同的情况下才会覆盖。这样可以节省从命令行运行$ gulp default的时间,如果文件没有更改,则在运行时没有文件会复制到dist子目录。 我要感谢每个人的有效贡献,这确实在不同领域帮助了我。 亲切的问候

//original function code:
function phpscript()
{
    return gulp.src(phpSRC)
    .pipe(gulp.dest(phpDIST));
}


// changed function code to:
function phpscript()
{
    return gulp.src(phpSRC)
    .pipe(changed(phpDIST))
    .pipe(gulp.dest(phpDIST));
}