gulp插件gulp-nunjucks-render的使用及gulp4的简单了解
之前写过一篇gulp的使用文章一篇迟到的gulp文章,代码合并压缩,less编译
最近有在用gulp,使用到一个gulp-nunjucks-render插件,感觉挺方便的
gulp-nunjucks-render 用来渲染Nunjucks templates
安装
npm install --save-dev gulp-nunjucks-render
使用
var env = process.env.NODE_ENV;
var ver = require('./package.json').version;
var normalUrl = {
'dev': 'http://www.t.xxx.com',
'test': 'http://www.t.xxx.com',
'pre': 'http://www.pre.xxx.com',
'prod': 'https://www.xxx.com',
};
return gulp.src([src + 'pages/**/*.html'])
.pipe(nunjucksRender({
path: [src], // String or Array
manageEnv: manageEnvironment,
data: {
wwwUrl: normalUrl[env]
}
}))
.pipe(gulp.dest(dist))
.pipe(connect.reload());
1、使用data作为一个选项
nunjucksRender({data: {
css_path: 'http://company.com/css/'
}});
<link rel="stylesheet" href="{{ css_path }}test.css" />
编译之后
<link rel="stylesheet" href="http://company.com/css/test.css" />
2、manageEnv用来在编译之前添加filters、globals
var manageEnvironment = function(environment) {
environment.addFilter('getAssetsUrl', function(filename) {
const extname = filename.split('.').pop();
const revJsonFile = path.join(path.dirname(__filename) + '/' + dist, 'public/' + extname + '/rev-manifest.json');
if (fs.existsSync(revJsonFile)) {
const hashMapJson = fs.readFileSync(revJsonFile);
const hashMap = JSON.parse(hashMapJson);
return `${host}/${extname}/${hashMap[filename]}`;
}
});
environment.addFilter('getLibUrl', function(filename) {
return `${host}/lib/${filename}`;
})
environment.addFilter('getVendorUrl', function(filename) {
return `${host}/vendor/${filename}`;
})
environment.addFilter('getImgUrl', function(filename) {
return `https://xxx.xxx.com/www/${imgVer}/pc/img/${filename}`;
})
var newenv = {
'dev': 'development',
'test':'testing',
'pre':'pre',
'prod':'production'
}
environment.addGlobal('env', newenv[env]);
let baseUrl = 'https://www.xxxx.com';
environment.addGlobal('baseUrl', baseUrl);
};
将manageEnvironment添加到manageEnv中
return gulp.src([src + 'pages/**/*.html'])
.pipe(nunjucksRender({
manageEnv: manageEnvironment,
}));
这样在html文件中,通过{{ env }}这种形式拿到全局变量值
<script src="{{ 'nprogress.js' | getVendorUrl }}"></script>
// config
define('config', function () {
return {
env: '{{ env }}',
baseUrl: '{{ baseUrl }}'
};
});
另外,之前一直在用gulp3,今天对gulp4也简单了解了下
gulp4的任务执行
1、在gulp3中,task任务一般都是并行执行,如果需要同步执行需要另外使用插件 run-sequence
2、gulp4中,提供了gulp.series和gulp.parallel任务执行方式
gulp.series 用于串行(顺序)执行
gulp.parallel 用于并行执行
串行、并行执行
const task = gulp.series(clean, gulp.series(copy, js, css), gulp.parallel(html));
function watch(done) {
gulp.watch('src/**/*.*', task);
done();
}
/* m end */
var build = gulp.series(clean, task);
var dev = gulp.series(build, gulp.parallel(watch, serve));
exports.dev = dev;
exports.build = build;
执行命令
gulp dev
gulp build
参考阅读
走进gulp4的世界
Gulp 4: gulp.parallel gulp.series -- 全新的任务执行体系
gulp插件gulp-nunjucks-render的使用及gulp4的简单了解的更多相关文章
- 利用gulp 插件gulp.spritesmith 完成小图合成精灵图,并自动输出样式文件
安装依赖 yarn add gulp yarn add gulp.spritesmith 本次依赖的版本是: "gulp": "^3.9.1" "gu ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- gulp 插件
原文链接:http://www.mamicode.com/info-detail-517085.html gulp是什么? http://gulpjs.com/ 相信你会明白的! 与著名的构建工具gr ...
- gulp插件gulp-ruby-sass和livereload插件
gulp-ruby-sass是gulp的一个插件,主要是用来实现sass编译,livereload插件主要是实现文件保存时浏览器自动刷新,避免了手动f5的频繁的操作 准备工作:chrome浏览器安装l ...
- gulp插件autoprefixer
gulp的autoprefixer插件可以根据我们的设置帮助我们自动补全浏览器的前缀(如:-moz.-ms.-webkit.-o) 1)首先安装gulp,不知道怎么安装请看这里 2)安装autopre ...
- gulp插件(gulp-jmbuild),用于WEB前端构建
源码地址:https://github.com/jiamao/gulp-jmbuild https://github.com/jiamao/gulp-jmbuild gulp-jmbuild gulp ...
- gulp插件gulp-usemin简单使用
关于什么是gulp,它和grunt有什么区别等问题,这里不做任何介绍.本文主要介绍如何使用gulp-usemin这款插件,同时也会简单介绍本文中用到的一些插件. 什么是gulp-usemin 用来将H ...
- 使用gulp插件来自动刷新页面。
http://itakeo.com/blog/2016/05/19/gulpreload/?none=123 使用gulp插件来自动刷新页面.再也不用修改一次,按一下F5了. 首选通过npm inst ...
- 将less编译成css的gulp插件
简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码, ...
随机推荐
- GDKOI2017滚粗记
Preface 比赛成绩非常烂,却腐败得非常爽,但是gmh大爷因为和我们腐败,变得更强. 比赛策略有点问题,拼命想正解而没了暴力分 数论题做得比较少,导致只会找规律.知识点需要补充,如AC自动机,启发 ...
- comutil
使用该工具库,通常包含comsuppw.lib.kernel32.lib. _com_util::ConvertBSTRToString 将VT_BSTR类型转换为普通字符串.
- CSS背景图片
1.背景图片插入 代码格式:background-image:url(): 括号内填写图片路径 2.背景图片设置大小 代码格式:background-size:宽.高 3.背景图片设置不平铺 代码格式 ...
- mac 下SonarQube 安装与使用
参考文件:https://www.jianshu.com/p/aa863cf30406 https://www.jianshu.com/p/b41262fca5b8 jenkins 集成Sonar: ...
- C语言复习6_doWhile循环
基本语法 do{ 循环操作 }while(循环条件); 特点:先执行,再判断 先执行一遍循环操作 符合条件,循环继续执行 否则循环退出 例题: #include <stdio.h> #in ...
- [tkinter]Radiobutton单选按钮的使用
首先因为单选按钮有一个特性(一个被选中后,自动清除其它按钮的选中状态) 所以使用方式也有点不同 错误示例 from tkinter import * root = Tk() r1 = Radiobut ...
- ora-01033 oracle initialization or
这次出现这个问题是源于错删了 DBF文件. 解决方案如下: 1.打开SQL Plus 最后把你删掉的那个文件的表空间删掉就好了
- C语言面试题分类->指针
有关指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的 ...
- mysql查看编码格式以及修改编码格式
1.进入mysql,输入show variables like 'character%';查看当前字符集编码情况,显示如下: 其中,character_set_client为客户端编码方式: char ...
- Linux中搭建Maven私服
linux安装maven 先解压maven的压缩包apache-maven-3.5.4-bin.tar.gz 命令: tar -zavf pache-maven-3.5.4-bin.tar.gz ...