博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建gulp项目
阅读量:5173 次
发布时间:2019-06-13

本文共 5286 字,大约阅读时间需要 17 分钟。

express是node.js中的构建工具,如果需要使用express构建,首先需要安装express。

构建一个项目:

|-- app

| |-- css
| |-- js
| | `-- class
| | |-- index.js
| | `-- test.js
| `-- views
| |-- error.ejs
| `-- index.ejs

|-- server

|-- tasks

在构建完该目录后,在根目录上使用npm init -y,构建package.json文件,sudo cnpm install -g express-generator命令安装express(新版express存在在express-generator包中)然后进入server目录,通过express -e .   命令构建脚手架,其中 -e表示构建一级模板引擎

然后执行 cd . && npm install  

回到构建目录:

cd ../tasks/

mkdir util

touch util/args.js

回到根目录

touch .babelrc(使用babel时使用)

touch gulpfile.babel.js (接下来使用ES6语法,所以需要创建gulpfile.babel.js文件)

进入args.js文件,引入一个包

import yargs from 'yargs';const args = yargs    .option('production',{        boolean:true,        default:false,        describe:'min all scripts'    })    .option('watch',{        boolean:true,        default:false,        describe:'watch all files'    })    .option('verbose',{        boolean:true,        default:false,        describe:'log'    })    .option('sourcemaps',{        describe:'force the creation of sroucemaps'    })    .option('port',{        string:true,        default:8080,        describe:'server port'    })    .argvexport default args;
View Code

 

 

 

touch tasks/scripts.js

import gulp from 'gulp';import gulpif from 'gulp-if';import concat from 'gulp-concat';import webpack from 'webpack';import gulpWebpack from 'webpack-stream';import named from 'vinyl-named';import livereload from 'gulp-livereload';import plumber from 'gulp-plumber';import rename from 'gulp-rename';import uglify from 'gulp-uglify';import {log,colors} from 'gulp-util';import args from './util/args';
View Code

 

 

 

 

使用

cnpm install gulp gulp-if gulp-concat webpack webpack-stream  gulp-plumber gulp-rename gulp-uglify gulp-util gulp-livereload vinyl-named yargs --save-dev

等安装完毕后,重新进入scripts.js文件,编写:

import gulp from 'gulp';import gulpif from 'gulp-if';import concat from 'gulp-concat';import webpack from 'webpack';import gulpWebpack from 'webpack-stream';import named from 'vinyl-named';import livereload from 'gulp-livereload';import plumber from 'gulp-plumber';import rename from 'gulp-rename';import uglify from 'gulp-uglify';import {log,colors} from 'gulp-util';import args from './util/args';gulp.task('scripts',()=>{    return gulp.src(['app/js/index.js'])        .pipe(plumber({            errorHandle:function(){            }        }))        .pipe(named())        .pipe(gulpWebpack({            module:{                loaders:[{                    test:/\.js$/,                    loader:'babel'                }]            }        }),null,(err,stats)=>{        log(`Finished '${colors.cyan('scripts')}'`,stats.toString({    chunks:false}))}).pipe(gulp.dest('server/public/js'))    .pipe(rename({        basename:'cp',        extname:'.min.js'    }))    .pipe(uglify({compress:{properties:false},output:{'quote_keys':true}}))    .pipe(gulp.dest('server/public/js'))    .pipe(gulpif(args.watch,livereload()))})
View Code

 

touch tasks/pages.js

import gulp from 'gulp';import gulpif from 'gulp-if';import livereload from 'gulp-livereload';import args from './util/args';gulp.task('pages',()=>{    return gulp.src('app/**/*.ejs')        .pipe(gulp.dest('server'))        .pipe(gulpif(args.watch,livereload()))})
View Code

 

touch tasks/css.js

import gulp from 'gulp';import gulpif from 'gulp-if';import livereload from 'gulp-livereload';import args from './util/args'gulp.task('css',()=>{    return gulp.src('app/**/*.css')        .pipe(gulp.dest('server/public'))})
View Code

 

touch tasks/server.js

import gulp from 'gulp';import gulpif from 'gulp-if';import liveserver from 'gulp-live-server';import args from './util/args';gulp.task('serve',(cb)=>{    if(!args.watch) return cb();var server = liveserver.new(['--harmony','server/bin/www']);server.start();gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function(file){    server.notify.apply(server,[file]);})gulp.watch(['server/routes/**/*.js','server/app.js'],function(){    server.start.bind(server)()});})
View Code

 

touch tasks/browser.js

import gulp from 'gulp';import gulpif from 'gulp-if';import gutil from 'gulp-util';import args from './util/args'gulp.task('browser',(cb)=>{    if(!args.watch) return cb();    gulp.watch('app/**/*.js',['scripts']);    gulp.watch('app/**/*.ejs',['pages']);    gulp.watch('app/**/*.css',['css']);});
View Code

 

touch tasks/clean.js

import gulp from 'gulp';import del from 'del';import args from './util/args';gulp.task('clean',()=>{    return del(['server/public','server/views'])})
View Code

 

touch tasks/build.js

import gulp from 'gulp';import gulpSequence from 'gulp-sequence';gulp.task('build',gulpSequence('clean','css','pages','scripts',['browser','serve']));
View Code

 

touch tasks/default.js

import gulp from 'gulp';gulp.task('default',['build']);
View Code

 

 

npm i gulp-util gulp-live-server del --save-dev

cnpm i babel-loader babel-core babel-preset-env   babel-preset-es2015    --save-dev

vim gulpfile.babel.js

import requireDir from 'require-dir';requireDir('./tasks');
View Code

 

cnpm i require-dir   babel-register    babel-preset-es2015  --save-dev

cnpm i gulp-sequence cookie-parser  epxress morgan  serve-favicon  --save-dev

修改server/app.js文件:

app.use(require('connect-livereload')())

cnpm i connect-livereload  babel-polyfill --save-dev

 

 验证:

http://loalhost:3000

转载于:https://www.cnblogs.com/xiaopi-python/p/8176323.html

你可能感兴趣的文章
让SVN自动更新代码注释中的版本号
查看>>
java中base64
查看>>
常用的mysql操作命令
查看>>
Unity3D的菜单及编辑器扩展
查看>>
我是如何拿到蚂蚁金服 offer 的 ?
查看>>
Android Volley 的基本使用/设置HTTP请求参数、apikey
查看>>
Hibernate框架
查看>>
Vim编辑器的使用总结
查看>>
ArcGIS REST 缓存清除(地图空白不显示的问题 )
查看>>
第0次作业
查看>>
"类" 库添加继承
查看>>
ucos在s3c2410上运行过程整体剖析之基础知识-与UCOS运行有关的ARM9芯片知识--续 ...
查看>>
存储器的寻址问题 分类: 计算机组成原理 2011-...
查看>>
DDRmenu(翻译)
查看>>
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
查看>>
Atitit 架构的原则attilax总结
查看>>
和讯网包容且务实
查看>>
ASP.Net之数据绑定
查看>>
Android自动化测试第三季第二讲Toast控件文字获取
查看>>
Google Analytics的能与不能
查看>>