构建gulp项目

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

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文件,引入一个包

构建gulp项目第1张构建gulp项目第2张
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'
    })
    .argv
export default args;
View Code

touch tasks/scripts.js

构建gulp项目第1张构建gulp项目第4张
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-namedyargs --save-dev

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

构建gulp项目第1张构建gulp项目第6张
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

构建gulp项目第1张构建gulp项目第8张
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

构建gulp项目第1张构建gulp项目第10张
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

构建gulp项目第1张构建gulp项目第12张
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) returncb();
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

构建gulp项目第1张构建gulp项目第14张
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) returncb();
    gulp.watch('app/**/*.js',['scripts']);
    gulp.watch('app/**/*.ejs',['pages']);
    gulp.watch('app/**/*.css',['css']);
});
View Code

touch tasks/clean.js

构建gulp项目第1张构建gulp项目第16张
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

构建gulp项目第1张构建gulp项目第18张
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

构建gulp项目第1张构建gulp项目第20张
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

vimgulpfile.babel.js

构建gulp项目第1张构建gulp项目第22张
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 epxressmorgan serve-favicon --save-dev

修改server/app.js文件:

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

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

验证:

http://loalhost:3000

免责声明:文章转载自《构建gulp项目》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ModSecurity学习笔记(一)学习Maven之Maven Enforcer Plugin,配置pom强校验下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

React入门教程第一课--从零开始构建项目

工欲善其事必先利其器,现在的node环境下,有太多好用的工具能够帮助我们更好的开发和维护管理项目。 我本人不建议什么功能都自己写,我比较喜欢代码复用。只要能找到npm包来实现的功能,坚决不自己敲代码。 本次编写程序的两个原则:1、尽量使用声明式的编程风格(声明式和命令式,不是很清楚的自己查查资料)2、能复用的决不自己编写。 任何多余的繁琐的行为都是错误的...

gulp4.0配置

var gulp = require('gulp'); var rename = require('gulp-rename');//重命名 var uglify=require('gulp-uglify');//js压缩 var watch=require('gulp-watch');//监视 v...

前端团队成长计划(一):基础知识梳理

一个月前我开始了前端团队的成长计划,主要主语两方面的考虑:校招应届生能快速进入工作的状态达到一个能支撑业务的技能水平,提前学习主流前端技术,为未来的业务代码重构做储备。5月是整个计划的第一个阶段,主要的任务是,梳理常规前端基础知识和开发技能。 5月的计划如下:(偏基础) 1、js和css的一些规范以及常规功能如何实现; 2、了解现有业务工程的开发,部署,上...

转载:前端大牛们都学过哪些东西?

作者:秦墨鱼链接:http://www.zhihu.com/question/22146521/answer/94842197来源:知乎著作权归作者所有,转载请联系作者获得授权。 学过的东西杂而不精,算不得大牛。带过前端团队,也算是有几年前端负责人的经验。随着这几年前端node.js,react,Angularjs等技术新起,越来越多从之前单纯的前端开发到...

gulp运行步骤

一、运行→输入cmd→跳出命令窗口二、cd D: 敲回车进入D盘,cd www 进入项目路径 cd mygulp三、执行 cnpm install gulp --save-dev 命令 (初始化安装gulp)四、执行cnpm init 配置package.json五、在项目根目录下创建一个名为 gulpfile.js 的文件六、执行gulp...

Gulp插件笔记

初次接触Gulp是出于网页模块化的需要,用过之后发现这个任务管理工具有很多实用的插件,意外地好用,于是打算写下这篇笔记把用到的Gulp插件记录一下。至于想了解Gulp基本用法的同学可以去Gulp官网查看API文档,一看便懂。 此处贴上地址https://www.gulpjs.com.cn/docs/api/ gulp-html-import API文档:...