Gulp打包構建專案
打包壓縮js,css,支援sass編譯成css,圖片壓縮,圖片組建成精靈圖,靜態檔案拷貝,實時監聽變化自動重新整理瀏覽器 //引入相關外掛 var gulp = require('gulp'); var rename = require('gulp-rename'); //檔案重新命名 var uglify = require('gulp-uglify'); //JS程式碼壓縮 var minCSS = require('gulp-clean-css'); //CSS程式碼壓縮 var autoprefixer = require('gulp-autoprefixer'); //新增瀏覽器字首 var clean = require('gulp-clean'); //清空檔案 var cleanDest = require('gulp-clean-dest'); //清空dist目錄指定檔案 var changed = require('gulp-changed'); //僅僅傳遞更改過的檔案 var imagemin = require('gulp-imagemin'); //圖片壓縮 var spritesmith = require('gulp.spritesmith'); //PNG圖片合併成精靈圖 const filter = require('gulp-filter'); //js壓縮過濾器,排除已壓縮過的 var sass = require('gulp-sass'); //處理sass檔案 var browserSync = require('browser-sync'); //擁有實時過載伺服器 var reload = browserSync.reload; //編譯後重新重新整理瀏覽器 var buffer = require('vinyl-buffer'); var merge = require('merge-stream'); var pageSrc = 'src/pages/**/*.html'; var pageDist = 'dist/pages/'; var jsSrc = 'src/js/**/*.js'; var jsDist = 'dist/js/'; var cssSrc = 'src/css/**/*.css'; var cssDist = 'dist/css/'; var sassSrc = 'src/sass/**/*.scss'; var sassDist = 'src/css/'; var imgSrc = 'src/images/*'; var imgDist = 'dist/images/'; var iconfontSrc = 'src/iconfont/*'; var iconfontDist = 'dist/iconfont/'; var staticSrc = 'src/static/*'; var staticDist = 'dist/static/'; var spriteSrc = 'src/images/*.png'; var spriteDist = 'src/images/sprite'; gulp.task('html', function() { //拷貝html return gulp.src(pageSrc) .pipe(changed(pageDist)) .pipe(cleanDest(pageDist))//先清空後生成 .pipe(gulp.dest(pageDist)) .pipe(reload({ stream:true })); }); //對已經壓縮過的檔案進行過濾,不再壓縮 var jsFilter = filter([jsSrc, '!src/js/**/*.min.js'], {restore: true}); gulp.task('js', function() { //拷貝壓縮js return gulp.src(jsSrc) .pipe(changed(jsDist)) .pipe(cleanDest(jsDist))//先清空後生成 .pipe(jsFilter) // 這會輸出一個未壓縮過的版本 .pipe(gulp.dest(jsDist)) // 這會輸出一個壓縮過的並且重新命名未 foo.min.js 的檔案 .pipe(uglify()) .pipe(rename({ extname: '.min.js' })) .pipe(jsFilter.restore) .pipe(gulp.dest(jsDist)) .pipe(reload({ stream:true })); }); gulp.task('css', function() { //拷貝壓縮css return gulp.src(cssSrc) .pipe(changed(cssDist)) .pipe(cleanDest(cssDist))//先清空後生成 .pipe(autoprefixer({ browsers: ['last 2 versions'], cascade: false })) // 這會輸出一個未壓縮過的版本 .pipe(gulp.dest(cssDist)) .pipe(minCSS()) .pipe(rename({ extname: '.min.css' })) .pipe(gulp.dest(cssDist)) .pipe(reload({ stream:true })); }); gulp.task('sass', function () { //將sass檔案編譯成css return gulp.src(sassSrc) .pipe(changed(sassSrc)) .pipe(cleanDest(sassDist))//先清空後生成 .pipe(sass()) .pipe(gulp.dest(sassDist)) .pipe(reload({ stream:true })); }); gulp.task('img', function() { //拷貝壓縮圖片 return gulp.src([imgSrc,'src/images/**/*']) .pipe(changed(imgSrc)) .pipe(cleanDest(imgDist))//先清空後生成 // 這會輸出一個未壓縮過的版本 .pipe(imagemin([ imagemin.gifsicle({interlaced: true}), imagemin.jpegtran({progressive: true}), imagemin.optipng({optimizationLevel: 5}), imagemin.svgo({ plugins: [ {removeViewBox: true}, {cleanupIDs: false} ] }) ])) .pipe(gulp.dest(imgDist)) .pipe(reload({ stream:true })); }); gulp.task('sprite', function () { //產出精靈圖 /* //img,css產出的路徑相同時 var spriteData = gulp.src(spriteSrc).pipe(cleanDest(spriteDist)).pipe(spritesmith({ imgName: 'sprite.png', cssName: 'sprite.css' })); return spriteData.pipe(gulp.dest(spriteDist));*/ var spriteData = gulp.src(spriteSrc) .pipe(cleanDest(spriteDist)) .pipe(spritesmith({ imgName: 'sprite.png', cssName: 'sprite.css' })); //設定打包的圖片路徑 var imgStream = spriteData.img .pipe(buffer()) .pipe(imagemin()) .pipe(gulp.dest(spriteDist)); //設定打包的css路徑 var cssStream = spriteData.css .pipe(gulp.dest('src/css/sprite')); return merge(imgStream, cssStream); }); gulp.task('ifont', function () { //拷貝圖示字型 return gulp.src(iconfontSrc) .pipe(changed(iconfontDist)) .pipe(cleanDest(iconfontDist))//先清空後生成 .pipe(gulp.dest(iconfontDist)) .pipe(reload({ stream:true })); }); gulp.task('static', function () { //拷貝靜態資源,如json資料 return gulp.src(staticSrc) .pipe(changed(staticDist)) .pipe(cleanDest(staticDist))//先清空後生成 .pipe(gulp.dest(staticDist)) .pipe(reload({ stream:true })); }); //清除dist目錄 gulp.task('clean', function () { return gulp.src('dist', {read: false}) .pipe(clean()); }); //初始化時,批量執行多個操作 gulp.task('build', ['html','sass', 'css','js','sprite','img','ifont','static']); //開啟本地伺服器監視檔案改動 gulp.task('serve', function() { browserSync({ open:false, server: { baseDir: 'dist', index : "/pages/index.html" //將dist目錄下的index.html作為入口頁面訪問 } }); }); //啟動專案,命令:gulp start , // 瀏覽器訪問地址:http://localhost:3000/pages/index.html gulp.task('start',['clean'], function() { gulp.start(['build','serve']); gulp.watch(pageSrc, ['html']); gulp.watch(sassSrc, ['sass']); gulp.watch(cssSrc, ['css']); gulp.watch(jsSrc, ['js']); gulp.watch('src/images/*.png', ['sprite']); gulp.watch(imgSrc, ['img']); gulp.watch(iconfontSrc, ['ifont']); gulp.watch(staticSrc, ['static']); }); gulp.task('tojsp', function() { //新增jsp檔案 return gulp.src('dist/pages/**/*.html') .pipe(rename({ extname: '.jsp' })) .pipe(gulp.dest('dist/views/')) }); 說明:使用BrowserSync 和 gulp,你可以輕鬆地建立一個開發伺服器,然後同一個 WiFi 中的任何裝置都可以方便地訪問到。BrowserSync 同時集成了 live-reload 所以不需要另外做配置了。開啟一個瀏覽器,訪問預設的 URL (http://localhost:3000)
當前案例的目錄結構為:(目錄粗略圖,詳細圖)
注:當你啟動專案後直接瀏覽器輸入http://localhost:3000時可能返回的頁面資訊是:Get Error,排除了專案配置錯誤及程式碼書寫錯誤後,該錯誤可能是你的訪問地址沒有進入到指定頁面,倘若你的專案目錄結構比較複雜,主頁面不是直接暴露在外面,此時你需要在地址後面補充訪問的頁面路徑,例如我這邊的訪問時:
相關推薦
Gulp打包構建專案
打包壓縮js,css,支援sass編譯成css,圖片壓縮,圖片組建成精靈圖,靜態檔案拷貝,實時監聽變化自動重新整理瀏覽器 //引入相關外掛 var gulp = require('gulp'); var rename = require('gulp-rename'); /
用gulp打包釋出專案
在釋出之前還可以做程式碼優化: 1.壓縮 2.合併 3.增加版本號 首先,手動打包釋出的網站比如:https://javascript-minifier.com 顯然,手動打包麻煩費時費力的,那自從node.js出來以後,方便快捷,自動化處理。 打包
grunt構建專案打包上傳
全域性安裝grunt: npm install -g grunt-cli 生成package.json檔案: npm init 安裝grunt和所需要的外掛: npm install grunt –save-dev npm install –save-dev grunt-cont
[django]專案打包構建
這是專案的檔案結構。 官方文件的教程 setuptools模組 setuptools應該是對標準庫中的setup模組進行了封裝,看起來更好用一些。 打包過程 前提 安裝setuptools模組,一
使用maven構建專案時,SSM和springboot專案的打包與雲伺服器部署
下面講講如何打包SSM和springboot專案,並部署到雲伺服器上。 由於使用的IDE不同,有的使用eclipse,有的使用idea,所以如果在IDE中按照 maven clean 再 maven install的方式打包會稍有不同,下面介紹一種通用的方式,不論SS
vue-cli構建專案npm run build打包後怎麼在本地檢視效果
這時如果直接執行npn run build是可以執行並打包你的程式碼的,不會報任何異常或錯誤,但是會看到打包完成有這樣一句提示: 打開了控制檯,看到console tab下一片404的各種找不到資源 解決方案 開啟專案資料夾。找到config資料夾裡的index.
gulp構建專案(三):gulp-watch監聽檔案改變、新增、刪除
一、gulp.watch()功能介紹 舉例說明:當’./src/*.html’發生變化時,執行’html’任務,同時重新整理瀏覽器。如下: gulp.task('watch', function(){ gulp.watch('./src/*.
gulp構建專案(一):環境準備
一、建立package.json檔案 npm init // 一路回車就行(預設已安裝node) package.json內容如下: { "name": "gulp-project", "version": "1.0.0", "des
gulp構建專案(二):啟本地服務
一、安裝browser-sync模組 npm i -D browser-sync 二、引入browser-sync模組,並初始化 var browserSync = require('browser-sync').create(); gulp.t
gulp構建專案(十三):babel-polyfill編譯es6新增api
需求分析: es6語法以及提供的強大api給前端帶來了很大便利,可是部分瀏覽器無法識別es6語法 gulp-babel只能將es6語法編譯成es5,比如:箭頭函式、let變數等,但是API不能編譯,比如Object.assign 引用babel-p
vue-cli構建專案 npm run build打包後怎麼在本地檢視效果
本文以vue官方腳手架vue-cli構建的專案為例。 執行npm run dev以開發模式開啟除錯好了你的案例程式;你還不滿足於僅僅把程式碼放在github上,想把專案打包,然後在本地預覽或者放在個人部落格上供大家直接看效果學習。 這時如果直接執
gulp打包普通html專案
說明:支援配置config輸入目錄 以及輸出目錄 支援hash css js image(有動態更換本地圖片路徑時不建議使用hash) 支援合併css js 目前暫不支援合併後js路徑自動替換 支援自動替換html 引用檔案路徑 ...*min.* 不參與壓縮&
gulp自動化構建工作流——專案例項
gulp自動化構建工作流——專案常用配置 寫在最前 在專案中,除了使用Mvvm框架開發一個完整的app外,往往還有在原生app內部嵌入多個靈散H5頁面的需求。 在MVVM框架中
Jenkins+git+maven 打包構建部署
jenkins本文出自 “清風柳絮” 博客,請務必保留此出處http://binuu.blog.51cto.com/801317/1944493Jenkins+git+maven 打包構建部署
gulp自動化構建工具使用總結
名稱 測試 構建工具 3.2 str 鏡像 運行 sta cnp 簡介: gulp是前端開發過程中對代碼進行構建的工具,是自動化項目的構建利器;她不僅能對網站資源進行優化,而且在開發過程中很多重復的任務能夠使用正確的工具自動完成;使用她,我們不僅可以很愉快的編寫代碼,而且
spring could Windows打包構建docker鏡像到linux
win usr 版本 環境 ddr pre mave 重啟 default 一、工程結構 二、Pom配置 <build> <plugins> <plugin>
Webpack打包構建太慢了?試試幾個方法
hash vid put es5 階段 ade new contex 版本 Webpack是個很流行的打包工具,但其打包速度卻一直被吐槽著 如果不用上一些打包的優化建議,單單打包兩三個文件就能花上好幾秒,放上幾十個入口文件依賴幾百上千個包的話,幾分鐘十幾分鐘妥妥的
vue-cli打包構建時常見的報錯解決方案
imu cli blog error: 背景 服務 strong 背景圖 log 報錯1:打包後丟到服務器中,打開是空白頁 報錯2:打包後想要在本地file中打開,但是打開是空白頁 報錯3:打包後在瀏覽器中打開,報錯ERROR in xxx.js from UglifyJs
做一個合格的前端,gulp自動化構建工具入門教程
安裝完成 基本 合成 node.js 文件替換 mage 9.png basename 加載 我的新作觀點網http://www.guandn.com (觀點網是一個獵獲新奇、收獲知識、重在獨立思考的網站),它前端js、css的壓縮、合並、md5命名等就使用了gulp自動化
gulp自動化構建工具使用
min() 方法 json 圖片 打印 efault under ... 執行 gulpfile.js: var gulp = require("gulp"); var imagemin = require("gulp-imagemin");//壓縮圖片插件 var ug