一份gulp的配置檔案
阿新 • • 發佈:2019-02-09
參考:
gulpfile.js如下:
專案目錄參考結構如下:/** * Created by admin on 2016/12/3. */ /** * 元件安裝 * npm install gulp gulp-notify gulp-livereload gulp-sass gulp-rename gulp-autoprefixer gulp-cssnano jshint gulp-jshint gulp-uglify gulp-concat gulp-imagemin del --save-dev * * 參考: * http://www.dbpoo.com/getting-started-with-gulp/ * https://markgoodyear.com/2014/01/getting-started-with-gulp/ * http://blog.csdn.net/qq_15096707/article/details/52270355 */ // 引入 gulp及元件 var gulp = require('gulp'), //基礎庫 notify = require('gulp-notify'), //通知 //tinylr = require('tiny-lr'), //livereload //server = tinylr(), //port = 35729, livereload = require('gulp-livereload'), //livereload sass = require('gulp-sass'), //sass rename = require('gulp-rename'), //重新命名 autoprefixer = require('gulp-autoprefixer'), // 處理css中瀏覽器相容的字首 cssnano = require('gulp-cssnano'), // css的層級壓縮合並 jshint = require('gulp-jshint'), //js檢查 ==> npm install --save-dev jshint gulp-jshint(.jshintrc:https://my.oschina.net/wjj328938669/blog/637433?p=1) uglify = require('gulp-uglify'), //js壓縮 concat = require('gulp-concat'), //合併檔案 imagemin = require('gulp-imagemin'), //圖片壓縮 del = require('del'); //清空檔案 var SRC_DIR = './src/'; // 原始檔目錄 var DIST_DIR = './dist/'; // 檔案處理後存放的目錄 var DIST_FILE = DIST_DIR + '**'; // 目標路徑下的所有檔案 var Config = { html: { src: SRC_DIR + '*.html', dist: DIST_DIR }, assets: { src: SRC_DIR + 'assets/**/*', // assets目錄:./src/assets dist: DIST_DIR + 'assets' // assets檔案build後存放的目錄:./dist/assets }, css: { src: SRC_DIR + 'css/**/*.css', // CSS目錄:./src/css/ dist: DIST_DIR + 'css' // CSS檔案build後存放的目錄:./dist/css }, sass: { src: SRC_DIR + 'scss/**/*.scss', // SCSS目錄:./src/scss/ dist: DIST_DIR + 'css' // SCSS檔案生成CSS後存放的目錄:./dist/css }, js: { src: SRC_DIR + 'js/**/*.js', // JS目錄:./src/js/ dist: DIST_DIR + 'js', // JS檔案build後存放的目錄:./dist/js build_name: 'build.js' // 合併後的js的檔名 }, img: { src: SRC_DIR + 'images/**/*', // images目錄:./src/images/ dist: DIST_DIR + 'images' // images檔案build後存放的目錄:./dist/images } }; /** * copy任務(複製不需要處理的檔案到dist目錄下) */ /*var copyTasks = [ 'html', 'assets' ]; // 定義單純的複製功能的列表 gulp.task('copy', function () { for (var i = 0; i < copyTasks.length; i++) { var key = copyTasks[i]; gulp.src(Config[key].src) .pipe(gulp.dest(Config[key].dist)); //.pipe(notify({ message: key + ' task complete' })); } });*/ /** * HTML處理 */ gulp.task('html', function () { gulp.src(Config.html.src) .pipe(gulp.dest(Config.html.dist)); }); /** * assets資料夾下的所有檔案處理 */ gulp.task('assets', function () { gulp.src(Config.assets.src) .pipe(gulp.dest(Config.assets.dist)); }); /** * CSS樣式處理 */ gulp.task('css', function () { gulp.src(Config.css.src) .pipe(autoprefixer('last 2 version')) .pipe(gulp.dest(Config.css.dist)) .pipe(rename({suffix: '.min'})) .pipe(cssnano()) //執行壓縮 .pipe(gulp.dest(Config.css.dist)) .pipe(notify({message: 'css task complete'})); }); /** * 監聽CSS檔案的變化,變化後將執行CSS任務 */ gulp.task('css-watch', function () { gulp.watch(Config.css.src, ['css']); }); /** * SCSS樣式處理 */ gulp.task('sass', function () { return gulp.src(Config.sass.src) .pipe(autoprefixer('last 2 version')) .pipe(sass()) .pipe(gulp.dest(Config.sass.dist)) .pipe(rename({suffix: '.min'})) //rename壓縮後的檔名 .pipe(cssnano()) //執行壓縮 .pipe(gulp.dest(Config.sass.dist)) .pipe(notify({message: 'sass task complete'})); }); /** * 監聽SASS檔案的變化,變化後將執行SASS任務 */ gulp.task('sass-watch', function () { gulp.watch(Config.sass.src, ['sass']); }); /** * js處理 */ gulp.task('js', function () { gulp.src(Config.js.src) .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')) .pipe(gulp.dest(Config.js.dist)) .pipe(rename({suffix: '.min'})) .pipe(uglify()) .pipe(gulp.dest(Config.js.dist)) .pipe(notify({message: 'js task complete'})); }); /** * 合併所有js檔案並做壓縮處理 */ gulp.task('js-concat', function () { gulp.src(Config.js.src) .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')) .pipe(concat(Config.js.build_name)) .pipe(gulp.dest(Config.js.dist)) .pipe(rename({suffix: '.min'})) .pipe(uglify()) .pipe(gulp.dest(Config.js.dist)) .pipe(notify({message: 'js-concat task complete'})); }); /** * 圖片處理 */ gulp.task('images', function () { return gulp.src(Config.img.src) .pipe(imagemin({optimizationLevel: 3, progressive: true, interlaced: true})) .pipe(gulp.dest(Config.img.dist)) /*.pipe(notify({ message: 'images task complete' }))*/; }); /** * 清空圖片、樣式、js */ gulp.task('clean', function () { return del([Config.html.dist, Config.css.dist, Config.js.dist, Config.img.dist]); }); gulp.task('clean-all', function () { return del([Config.html.dist, Config.assets, Config.css.dist, Config.js.dist, Config.img.dist]); }); /** * 預設任務 清空圖片、樣式、js並重建 執行語句 gulp */ gulp.task('default', ['clean'], function () { gulp.start('html', 'assets', 'css', 'images', 'js'); }); /** * 監聽任務 */ gulp.task('watch', function () { // Watch .html files gulp.watch(Config.html.src, ['html']); // Watch .css files gulp.watch(Config.css.src, ['css']); // Watch .scss files gulp.watch(Config.sass.src, ['sass']); // Watch assets files gulp.watch(Config.assets.src, ['assets']); // Watch .js files gulp.watch(Config.js.src, ['js']); // Watch image files gulp.watch(Config.img.src, ['images']); // Create LiveReload server livereload.listen(); // Watch any files in dist/, reload on change gulp.watch([DIST_FILE]).on('change', livereload.changed); });
從上面的目錄結果可以看到,除了有package.json和gulp配置檔案gulpfile.js外,還有一個 .jshintrc 檔案。這個是外掛 gulp-jshint 校驗js使用的。(網上找了一份,參考地址見gulpfile.js中的註釋部分)
.jshintrc如下:
使用cmd命令進入當前專案目錄,使用gulp watch 即可啟動gulp監聽專案檔案,檔案修改時,對應gulp任務就會被觸發並執行。{ "es5": true, "node": true, "bitwise": false, "camelcase": false, "curly": false, "eqeqeq": false, "forin": true, "strict": false, "freeze": true, "immed": true, "indent": 4, "latedef": true, "newcap": true, "noarg": true, "noempty": false, "nonbsp": true, "nonew": true, "plusplus": false, "undef": true, "trailing": true, "debug": false, "funcscope": true, "laxcomma": false, "loopfunc": true, "onevar": false, "unused": true }
使用gulp-livereload外掛可以實現檔案修改時瀏覽器的自動重新整理,需要在伺服器環境下,推薦使用 通過npm安裝http-server,快速建立http服務。
參考如下:
LiveReload配置
npm install http-server -g
|
3、通過cd找到釋出環境目錄dist
4、執行http-server,預設埠是8080
5、訪問路徑localhost:8080
6、再開啟一個cmd,通過cd找到專案路徑執行gulp,清空釋出環境並初始化
7、執行監控 gulp
8、點選chrome上的LiveReload外掛,空心變成實心即關聯上,你可以修改css、js、html即時會顯示到頁面中。