ES6項目構建-2(1)

項目構建的目錄—創(chuàng)建文件夾

1.文件夾


app 前端代碼

? ? ????js

????????????class

????????????index.js 入口文件

????????css

? ? ????views 前端模板

????????????error.ejs 錯誤模板

????????????index.ejs 入口模板

2.server 服務器代碼

3.tasks 構建工具

????????util 放置常見腳本

????????????args.js

4.package.json npm依賴包的配置文件 (用命令創(chuàng)建:npm init)

5. .babelrc babel進行編譯時自動尋找的文件。名字不能更改,缺少則babel無法讀取配置文件 (用命令創(chuàng)建:touch .babelrc)

6. gulpfile.babel.js? gulp配置文件,此處不使用gulpfiles.js,因為我們使用的是ES6語法。(用命令創(chuàng)建:touch gulpfile.babel.js)

(1)對創(chuàng)建命令行參數(shù)做處理(args.js)

import yargs from 'yargs';//處理命令行參數(shù)

const args = yargs //區(qū)分開發(fā)環(huán)境和線上環(huán)境

.option('production',{

????boolean:true,

????default:false,//默認值 開發(fā)環(huán)境

????describe:'min all scripts'

})

//是否監(jiān)聽命開發(fā)環(huán)境修改的文件(是否自動編譯等) .option('watch',{? boolean:true,default:false, describe:'watch all files'})

//要不要詳細的輸出命令行執(zhí)行的日志

.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)創(chuàng)建構建腳本對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中寫入創(chuàng)建安裝包的一些依賴字段

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';//命令行參數(shù)進行解析

//創(chuàng)建腳本編譯的一個任務

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'))

//監(jiān)聽文件,更改后自動刷新

.pipe(gulpif(args.watch,livereload()))})


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • gulpjs是一個前端構建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學...
    依依玖玥閱讀 3,304評論 7 55
  • 在現(xiàn)在的前端開發(fā)中,前后端分離、模塊化開發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,659評論 1 32
  • 構建工具逐漸成為前端工程必備的工具,Grunt、Gulp、Fis、Webpack等等,譯者有幸使用過Fis、Gul...
    陳堅生閱讀 6,190評論 4 64
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,368評論 7 35
  • 作者:@lxchinesszz本文為作者原創(chuàng),轉載請注明出處 工作之余,本人一直想買一臺服務器,介于價格,一忍再忍...
    Chinesszz閱讀 563評論 0 2

友情鏈接更多精彩內容