热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascriptGulp4具有外部配置的多文件任务。使用gulploadplugins的基本gulpfile模板,用于多个任务文件

本文由编程笔记#小编为大家整理,主要介绍了javascriptGulp4-具有外部配置的多文件任务。使用gulp-load-plugins的基本gulpfile模板,用于多个任务文件相关的知
本文由编程笔记#小编为大家整理,主要介绍了Javascript Gulp 4 - 具有外部配置的多文件任务。使用gulp-load-plugins的基本gulpfile模板,用于多个任务文件相关的知识,希望对你有一定的参考价值。




// =========================================================
// Gulp Task: browsersync
// NOTE: Using gulp v4
// Description: Sync sass, typescript, html, and browser
// using external config or add modify src
// npm install --save-dev browser-sync gulp-typescript gulpjs/gulp.git#4.0 gulp-load-plugins
// Options: node-sass gulp-sass || gulp-ruby-sass
// =========================================================
var cOnfig= require('../config.js');
var browserSync = require('browser-sync').create();
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
browserSync.init(config.browsersync.opts);
browserSync.watch(config.sass.src, gulp.series('sass'));
browserSync.watch(config.typescript.src, gulp.series('ts'));
browserSync.watch(config.browsersync.watch).on('change', browserSync.reload);
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: clean
// Description: deletes dist folder
// npm install --save-del del gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js'),
del = require('del');
module.exports = function(gulp, plugins) {
return function (cb) {
var stream =
// -------------------------------------------- Start Task
// del(config.clean.folders, cb);
del('./dist/', cb);
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Project: PROJECT-NAME
// =========================================================
// ------------------------------------------ Export Configs
module.exports = {
production: false, // use to programmatically operate on
// gulp tasks based on environment
// -------------------------------------------- autoprefixer
autoprefixer: {
opts: {
browsers: ['last 3 versions']
}
},
// --------------------------------------------- browsersync
browsersync: {
opts: {
server: './src/'
},
watch: [
'./src/assets/styles/css/**/*.css',
'./src/assets/scripts/js/**/*.js',
'./src/**/*.html'
]
},
// --------------------------------------------------- clean
clean: {
folders: [
'./dist/'
]
},
html: {
src: ['./src/**/*.html', '!src/assets/bin/**/*'],
htmlmin: { // In case more html file operations are needed.
opts: {
// https://github.com/kangax/html-minifier
collapseWhitespace: true,
removeComments: true
}
},
dest: './dist/'
},
// ------------------------------------------------ new-task
newtask: {
src: [
"./gulp/utils/newTaskTemplate.js"
],
outputName: "TASK-TEMPLATE.js",
dest: "./gulp/tasks/"
},
// -------------------------------------------------- rename
rename: {
min: { suffix: '.min' }
},
// ---------------------------------------------------- sass
sass: {
src: [
"./src/assets/styles/sass/**/*.{scss,sass}"
],
opts: { }, // add sass options here
outputName: 'main.css',
dest: './src/assets/styles/css/'
},
// ------------------------------------------------- scripts
scripts: {
src: [
'./src/assets/scripts/js/**/*.js',
],
dest: './dist/assets/js'
},
// -------------------------------------------------- styles
styles: {
src: [
'./src/assets/styles/css/**/*.css',
],
dest: './dist/assets/css'
},
// ---------------------------------------------- typescript
typescript: {
src: [
'./src/assets/scripts/ts/**/*.ts'
],
dest: './src/assets/scripts/js',
opts: {
noImplicitAny: true
}
},
// ------------------------------------------------- vendors
vendors: {
js: {
src: [
'./bower_components/bootstrap/dist/js/bootstrap.min.js',
'./bower_components/jquery/dist/jquery.min.js',
'./src/assets/bin/bootstrap-4.0.0-alpha/dist/js/bootstrap.min.js'
],
dest: './dist/assets/js/vendors'
},
css: {
src: [
'./bower_components/font-awesome/css/font-awesome.min.css',
'./bower_components/font-awesome/css/font-awesome.css.map',
'./bower_components/bootstrap/dist/css/bootstrap.min.css',
'./bower_components/bootstrap/dist/css/bootstrap.min.css.map'
],
dest: './dist/assets/css/vendors'
},
sass: {
// NOTE: This is to perform operations on the sass files
src: [
'./bower_components/font-awesome/scss/**/*.scss', // ex
'./src/assets/bin/bootstrap-4.0.0-alpha/scss/**/*.scss' // ex
],
opts: { },
dest: './dist/assets/css/vendors'
},
less: {
src: [
'./bower_components/bootstrap/less/**/*.less'
],
opts: { },
dest: './dist/assets/css/vendors'
},
fonts: {
src: [
'./bower_components/bootstrap/fonts/**/*.*',
'./bower_components/font-awesome/fonts/**/*.*'
],
dest: './dist/assets/fonts'
}
}
}


// =========================================================
// Project: PROJECT-NAME
// NOTE: Using Gulp 4
// npm install --save-dev gulp-load-plugins gulpjs/gulp.git#4.0
// =========================================================
var gulp = require('gulp'),
cOnfig= require('./gulp/config'),
plugins = require('gulp-load-plugins')();
// ---------------------------------- Gulp Terminal Commands
// ---- gulp
// ---- gulp build
// ---- gulp new-task
// --------------------function to get tasks from gulp/tasks
function getTask(task) {
return require('./gulp/tasks/' + task)(gulp, plugins);
}
// ---------------------------------------------- Gulp Tasks
gulp.task('sass', getTask('sass'));
gulp.task('scripts', getTask('scripts'));
gulp.task('styles', getTask('styles'));
gulp.task('ts', getTask('typescript'));
gulp.task('new-task', getTask('new-task'));
gulp.task('sync', getTask('browsersync'));
gulp.task('clean', getTask('clean'));
gulp.task('moveDist', getTask('move-dist'));
gulp.task('vendors', getTask('vendors'));
gulp.task('html', getTask('html'));
// --------------------------------------- Default Gulp Task
gulp.task('default', gulp.series(
gulp.parallel('sass', 'ts'), 'sync')
);
// ---------------------------------------------- gulp build
// vendors - task which moves and operates on node_modules
// and bower_components dependencies
// moveDist: moves dist folder to another location
// on the file system (useful for multiple repos e.g. gh-pages)
gulp.task('build', gulp.series('clean',
gulp.parallel('scripts', 'styles', 'html'), 'vendors', 'moveDist')
);
// =========================================================
// Basic example of gulp multifile tasks folder structure
// =========================================================
// **** Project-Directory/
// ------ gulpfile.js
// ****** src/
// ****** dist/
// ****** gulp/
// -------- config.js
// ******** tasks/
// ******** utils/
// ----------- newTaskTemplate.js


// =========================================================
// Gulp Task: html
// Description: minify html
// Dependencies: npm install --save-dev gulp-htmlmin
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src(config.html.src)
.pipe(plugins.htmlmin(config.html.htmlmin.opts))
.pipe(gulp.dest(config.html.dest));
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: moveDist
// Description: move dist folder to external folder. Useful
// for multirepo projects. e.g. a gh-pages-site.
// npm install --save-dev gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src('./dist/**/*.*')
.pipe(gulp.dest('./../gh-pages-site'));
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: newTask
// Description: creates a new multifile task template
// Dependencies: npm install gulp-rename gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function() {
var stream =
// -------------------------------------------- Start Task
gulp.src(config.newtask.src)
.pipe(plugins.rename(config.newtask.outputName))
.pipe(gulp.dest(config.newtask.dest));
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task:
// Description:
// Dependencies: npm install
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src('')
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: sass
// Description: transpiles sass, adds sourcemaps, prefixes
// npm install --save-dev node-sass gulp-sass gulp-sourcemaps gulp-autoprefixer gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src(config.sass.src)
.pipe(plugins.sourcemaps.init())
.pipe(plugins.sass().on('error', plugins.sass.logError))
.pipe(plugins.autoprefixer(config.autoprefixer.opts))
.pipe(plugins.sourcemaps.write('.'))
.pipe(gulp.dest(config.sass.dest))
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: scripts
// Description: uglify all js, add sourcemaps, rename
// npm install --save-dev gulp-uglify gulp-rename gulp-sourcemaps merge-stream gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js'),
merge = require('merge-stream');
module.exports = function(gulp, plugins) {
return function () {
// -------------------------------------------------- src js
var stream =
gulp.src(config.scripts.src)
.pipe(plugins.sourcemaps.init())
.pipe(plugins.uglify())
.pipe(plugins.rename(config.rename.min))
.pipe(plugins.sourcemaps.write('.'))
.pipe(gulp.dest(config.dist.scripts.js));
// ------------------------------------------------ End Task
return stream;
};
};


// =========================================================
// Gulp Task: styles
// Description: minify all css, add sourcemaps, rename
// Dependencies: npm install --save-dev gulp-minify-css gulp-rename gulp-sourcemaps gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src(config.styles.src)
.pipe(plugins.sourcemaps.init())
.pipe(plugins.minifyCss())
.pipe(plugins.rename(config.rename.min))
.pipe(plugins.sourcemaps.write('.'))
.pipe(gulp.dest(config.dist.styles.css));
// ---------------------------------------------- End Task
return stream;
};
};


// =========================================================
// Gulp Task: typescript
// Description: Transpile .ts files and add sourcemaps
// npm install --save-dev gulp-typescript gulp-sourcemaps gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js');
module.exports = function(gulp, plugins) {
return function () {
var stream =
// -------------------------------------------- Start Task
gulp.src(config.typescript.src)
.pipe(plugins.sourcemaps.init())
.pipe(plugins.typescript(config.typescript.opts));
// ---------------------------------------------- End Task
return stream.js.pipe(plugins.sourcemaps.write('.')).pipe(gulp.dest(config.typescript.dest));
};
};


// =========================================================
// Gulp Task: vendors
// Description: move all node and bower dependencies to dist
// easily add sass, less, etc. Operate on each as needed.
// basic configuration supplied
// npm install --save-dev merge-stream gulp-newer
// gulp-load-plugins
// =========================================================
var cOnfig= require('../config.js'),
merge = require('merge-stream');
module.exports = function(gulp, plugins) {
return function () {
// ---------------------------------------------- Start Task
// ---- move js files
var js =
gulp.src(config.vendors.js.src)
.pipe(plugins.newer(config.vendors.js.dest))
.pipe(gulp.dest(config.vendors.js.dest));
// ---- move css files
var css =
gulp.src(config.vendors.css.src)
.pipe(plugins.newer(config.vendors.css.dest))
.pipe(gulp.dest(config.vendors.css.dest));
// ---- move font files
var fOnts=
gulp.src(config.vendors.fonts.src)
.pipe(plugins.newer(config.vendors.fonts.dest))
.pipe(gulp.dest(config.vendors.fonts.dest));

// ---- sass
// var sass =
// gulp.src(config.vendors.sass.src)
// .pipe(plugins.newer(config.vendors.sass.dest))
// .pipe(gulp.dest(config.vendors.sass.dest));
// ---- less
// var sass =
// gulp.src(config.vendors.less.src)
// .pipe(plugins.newer(config.vendors.less.dest))
// .pipe(gulp.dest(config.vendors.less.dest));
// ------------------------------------------------ End Task
return merge( js, css, fonts ); // add sass and/or less
};
};


推荐阅读
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 前言小伙伴们大家好。从今天开始我们将从 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 枚举使用枚举我们可以定义一些带名字的常量。使用枚举可以清晰地表达意图或创建一组有区别的用例。TypeScript支持数字的和基于字符串的枚举。数字枚举首先我们看看数字枚举,如果你使 ... [详细]
  • 小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
author-avatar
NewGuy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有