一、安装配置nodejs

1.下载官网程序并安装在 D 盘

2.环境变量配置

1)在 node.js 的安装目录新建两个文件夹 node_global 和 node_cache

2)cmd 运行

npm config set prefix “D:\nodejs\node_global”npm config set cache “D:\nodejs\node_cache”

3)设置电脑环境变量,右键“我的电脑”=》属性=》高级系统设置=》环境变量新建环境变量

NODE_PATH,值为D:\nodejs\node_global\node_modulespath变量添加 D:\nodejs\node_global

4)测试是否配置成功,在cmd窗口中输入以下指定全局安装express模块

$ npm install -g express

# -g表示是全局安装    检查 D:\nodejs\node_global\node_modules 是否有 express 文件夹

5)国内镜像网站配置

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

以后下载模块的时候,将npm替换成cnpm即可从淘宝镜像中下载模块:

cnpm install xx

二、npm init 初始化项目&package文件

npm init 生成 package文件,或则你可以自己手动生成
$ cd 文件目录
$ npm init
Press ^C at any time to quit.

//完成name,varsion….license项的信息填写后

Is this OK? <yes>

//下面我们输入yes,就完成了package.json包的建立.

当前项目目录下用命令 npm install 或 npm install –save-dev 安装是,
自动将 package.json 中的模块安装到 node-modules 文件夹下

目录结构:

├── gulpfile.js
├── config.js
├── package.json
└── node_modules

三、安装gulp(全局&项目内)
3.1 全局安装 gulp

$ npm install –global gulp-cli

$ gulp -v[18:35:45] CLI version 2.0.1

//得到gulp的版本号,确认安装成功

3.2 在项目中安装 gulp

$ npm install –save-dev

gulp 命令

#–save-dev是为了把插件包显示在package.json中,为了以后在其他地方的安装

$ gulp -vCLI version 2.3.0Local version 4.0.2

四、配置gulp任务&运行

1.在项目根目录创建一个 gulpfile.js 文件

2.配置你真正需要的 gulp 任务

cnpm install gulp-sass gulp-autoprefixer gulp-minify-css gulp-notify gulp-plumber gulp-if minimist gulp-util    cnpm install gulp-eslint browser-sync gulp-clean-css

压缩,代码质量检查,浏览器自动刷新

3.测试gulp任务

$ gulp watch

#执行任务

$ Ctrl+c

#退出任务

https://segmentfault.com/a/1190000009136917

var gulp = require(‘gulp’);

var sass          = require(‘gulp-sass’);

// sass的编译

var autoprefixer  = require(‘gulp-autoprefixer’);

// 自动添加css前缀

var minifycss     = require(‘gulp-minify-css’);

// 压缩css一行gulp-uglify 用于压缩 JS gulp-concat 合并文件

var notify        = require(‘gulp-notify’);

// 加控制台文字描述用的

var plumber       = require(‘gulp-plumber’);

// 监控错误 可以阻止 gulp 插件发生错误导致进程退出并输出错误日志

var gulpif        = require(‘gulp-if’);

// 条件判断

var minimist      = require(‘minimist’);

//命令行参数解析工具

var gutil         = require(‘gulp-util’);

// 打印日志 log

var sequence      = require(‘run-sequence’)

//同步执行任务

var browserSync   = require(‘browser-sync’);

// 静态服务器和代理请求

/** * 错误输出 * * @param {any} error */

var onError = function(error){

var title = error.plugin + ‘ ‘ + error.name;

var msg = error.message;

var errContent = msg.replace(/\n/g, ‘\\A ‘);

// replace to `\A`, `\n` is not allowed in css content

// system notification

notify.onError({title: title,message: errContent,sound: true})(error);

// prevent gulp process exit

this.emit(‘end’);

};

/* 压缩 js  */

gulp.task(‘script’, function() {

// 1. 找到文件

gulp.src(config.dev.script)

// 错误处理

.pipe(plumber(onError))

// 2. 压缩文件

.pipe(uglify())

// 3. 另存压缩后的文件

.pipe(gulp.dest(config.build.script))})

/* 压缩 css  */

gulp.task(‘cssmin’, function() {

console.log(‘cssmin’)

var AUTOPREFIXER_BROWSERS = [        ‘last 6 version’,        ‘ie >= 6’,        ‘ie_mob >= 10’,        ‘ff >= 30’,        ‘chrome >= 34’,        ‘safari >= 7’,        ‘opera >= 23’,        ‘ios >= 7’,        ‘android >= 4.0’,        ‘bb >= 10’    ];

const hasFixFlag = (process.argv.slice(2).indexOf(‘–fix’) >= 0);

return gulp        .src(config.dev.styles)

// 获取流的api

.pipe(plumber(onError))

// 错误处理

.pipe(sass()).on(‘error’, sass.logError))

.pipe(autoprefixer(AUTOPREFIXER_BROWSERS))

//自动处理浏览器前缀[根据设置浏览器版本]

.pipe(gulpif(options.env === ‘production’, minifycss()))

////压缩css

.pipe(gulp.dest(config.build.styles))

// 写放文件的api

.pipe(reload({ stream: true }));

});

gulp.task(‘default’, function() {

// place code for your default task here

});

// 在命令行使用 gulp auto 启动此任务

gulp.task(‘auto’, function () {

// 监听文件修改,当文件被修改则执行 script 任务

gulp.watch(‘js/*.js’, [‘script’])})

src用来获取流的方法,但要注意这个流里的内容不是原始的文件流,而是一个虚拟文件对象流(Vinyl files),这个虚拟文件对象中存储着原始文件的路径、文件名、内容等信息

gulp.src(globs[, options]);

globs 文件匹配模式(类似正则表达式)

例:使用数组的方式来匹配多种文件:

gulp.src([‘js/*.js’,’css/*.css’,’*.html’])

dest输出文件gulp.dest(path)

pipe管道,你可以暂时将 pipe 理解为将操作加入执行队列gulp.pipe()

watch监视文件的变化,当文件发生变化后,我们可以利用它来执行相应的任务,例如文件压缩等。其语法为:

gulp.watch(glob[, opts], tasks);

task定义任务,内部使用的是Orchestrator(用于排序、执行任务和最大并发依赖关系的模块),

其语法为:gulp.task(name[, deps], fn)

第一个参数是任务名,

第二个参数是任务内容run表示要执行的任务。

可能会使用单个参数的形式传递多个任务原则:

一个任务只做一件事情,方便后续监听;

设置环境变量并根据当前环境做不同处理;

html公用模板提取。

比如:公用head、footer;压缩js时,检查js文件语法错误;编译less,添加CSS前缀;给静态资源文件添加版本号,解决浏览器缓存的问题;重新定义文件打包之后的路径;编译es6语法;编译es6新增的方法,比如Object.assign();

解决报错之后,服务挂掉的问题;

http://www.tuicool.com/articles/rURvuqR

https://segmentfault.com/a/1190000004527820#articleHeader10https://segmentfault.com/a/1190000011514257#articleHeader3

https://segmentfault.com/a/1190000009136917#articleHeader6

https://segmentfault.com/q/1010000005826920

https://segmentfault.com/a/1190000016236780?utm_source=tag-newesthttps://segmentfault.com/q/1010000008511012

https://segmentfault.com/a/1190000004527820#articleHeader15

http://www.tuicool.com/articles/rURvuqR

var requirejs = require(‘gulp-requirejs-simple’);

gulp.task(‘requirejs’,function(){

var fs = require(‘fs’),

fileList = [];

function walk(path){

var dirList = fs.readdirSync(path);

dirList.forEach(function(item){

if(fs.statSync(path + ‘/’ + item).isDirectory()){walk(path + ‘/’ + item);

}else{

fileList.push(item);

}});}

//由于require-simple目前只支持单个入口文件的打包,所以需要写一个遍历walk(‘app/html/js’);

fileList.forEach(function(item){

requirejs({

baseUrl: ‘dist’, //打包的根目录

name: ‘html/js/’+item.split(‘.’)[0], //文件名 不要.js

out: ‘dist/html/js/’+item, //输出文件名

mainConfigFile: ‘dist/html/js/’+item,

optimize: ‘uglify2’,

preserveLicenseComments: false,

generateSourceMaps: true,

})()})})

作者 admin

百度广告效果展示