美文网首页程序员
ES6项目构建-2(1)

ES6项目构建-2(1)

作者: yy不会笑 | 来源:发表于2017-12-19 17:43 被阅读72次

    项目构建的目录—创建文件夹

    1.文件夹

    app 前端代码

            js

                class

                index.js 入口文件

            css

            views 前端模板

                error.ejs 错误模板

                index.ejs 入口模板

    2.server 服务器代码

    3.tasks 构建工具

            util 放置常见脚本

                args.js

    4.package.json npm依赖包的配置文件 (用命令创建:npm init)

    5. .babelrc babel进行编译时自动寻找的文件。名字不能更改,缺少则babel无法读取配置文件 (用命令创建:touch .babelrc)

    6. gulpfile.babel.js  gulp配置文件,此处不使用gulpfiles.js,因为我们使用的是ES6语法。(用命令创建:touch gulpfile.babel.js)

    (1)对创建命令行参数做处理(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' })

    //强制生成sourcemap .option('sourcemaps',{ describe:'force the creation of sourcemap' })

    //设置服务器端口 .option('port',{ string:true, default:8080, describe:'server port' })

    //表示对输入的命令行内容以字符串进行解析

    .argv

    (2)创建构建脚本对js做处理(用命令行:touch tasks/scripts.js)

    (安装包命令:npm install gulp gulp-if gulp-concat webpack webpack-stream vinyl-named gulp-livereload gulp-plumber gulp-rename gulp-uglify gulp-util yargs --save-dev

    --save-dev 表示在package.json中写入创建安装包的一些依赖字段

    import gulp from 'gulp';import gulpif from 'gulp-if';//用gulp语句中做if判断的

    import concat from 'gulp-concat';//gulp中处理文件拼接的

    import webpack from 'webpack';

    import gulpWebpack from 'webpack-stream';//gulp处理的是文件流,对webpack的处理要结合webpackstream

    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';//处理js css 压缩

    import {log,colors} from 'gulp-util';//在命令行工具输出的包

    import args from './util/args';//命令行参数进行解析

    //创建脚本编译的一个任务

    gulp.task('scripts',()=>{ return gulp.src([app/js/index.js])

    //打开文件

    .pipe(plumber({ errorHandler:function(){//处理错误逻辑 } }))

    .pipe(named())//文件重命名

    .pipe(gulpWebpack({//js编译 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()))})

    相关文章

      网友评论

        本文标题:ES6项目构建-2(1)

        本文链接:https://www.haomeiwen.com/subject/gylvwxtx.html