亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nodejs實現(xiàn)簡單的gulp打包

 更新時間:2017年12月21日 08:47:25   作者:等鹿的小喵喵  
因為之前一直有人給我推薦gulp,說他這里好哪里好的。實際上對我來說夠用就行。grunt熟悉以后實際上他的配置也不難,說到效率的話確實是個問題,尤其項目大了以后,目前位置遇到的項目都還可以忍受。不過不管怎么說,需要親自用過gulp之后才能品評他和grunt之間的優(yōu)劣。

最近換了家新公司,由于是創(chuàng)業(yè)公司,項目基本從零開始搭建。工作幾年,也沒想過寫點什么技術(shù)性的東西,今天突然心血來潮,哦當然,我這個人總是特別容易心血來潮,不定想干點啥,不說廢話了,畢竟上班呢,開小差也不太好。忙了一個月,項目初見雛形,也基本可以1.0上線了,趁著等文案的時間,簡單寫點gulp打包的東西,等明兒有空再來一篇詳細的,再有空再來個webpack的,哎呀,這個有空也不知道是啥時候,莫怪,好像又廢話了幾句。stop,stop。

從頭兒來吧,首先創(chuàng)建一個package.json文件,就npm init一直確認確認確認就好了,構(gòu)建過程中用到什么就npm什么就好了。做過vue腳手架的小伙伴兒應該知道,腳手架會自動生成一個特別全面的package.json文件,當然我們目前也用不到那么多。不多說了。

為了萬一以后添加強大的功能,我們就多做幾個文件,就不是僅僅一個gulpfile.js了,當然一個也沒問題。

來創(chuàng)建一個gulpfile.config.js來專門放置文件路徑引用輸出等。就是所謂的src,dist。再來一個gulpfile.xxx.js,名字隨便起吧,引用的時候引用對就好了。再來一個gulpfile.js吧,最后要運行啊。

做個最簡單例子,以js壓縮為例,稍后加上版本哈管理功能,用法都差不多,用什么加什么。

var src_file = './xxxx/'; // 你的源文件目錄
var dist_file= './dist/xxxx/'; // 文件處理后你想存放的目錄
var config= {
src: src_file,
dist: dist_file,
js: {
  src: src_file + 'src/js/**/*.js',      // 你的js目錄
  dist: dist_file + 'src/js',         // js文件打包后存放的目錄
  },
};
module.exports = config;

這只是個最簡單的小例子,要是有其它的往里加就好了,html,css,img,還有一些靜態(tài)文件等。

關(guān)鍵的來了,我們把處理方法寫在gulpfile.xxx.js里面。

gulpfile.xxx.js:

var gulp = require('gulp');
var rename = require('gulp-rename'); //重命名
var babel = require("gulp-babel");
var uglify = require('gulp-uglify'); //js壓縮
var config = require('./gulpfile.config.js');
var runSequence = require('run-sequence');
var rev = require('gulp-rev');//版本號管理的一些東西,先寫進來吧,懶的在敲了
var revCollector = require('gulp-rev-collector');
var cssUrl = './dist/xxx/src/css/*.css',
   jsUrl = './dist/xxx/src/js/*.js';
function haha() {
  gulp.task('js', function () {
    return gulp.src(Config.js.src)
          .pipe(babel())
          .pipe(uglify())
          .pipe(gulp.dest(config.js.dist));
    });
  gulp.task('revJs', function(){
    return gulp.src(jsUrl)
          .pipe(rev())
          .pipe(rev.manifest())
          .pipe(gulp.dest('dist/xxx/src/js'));
  });
  gulp.task('revHtml', function () {
        return gulp.src(['dist/xxx/src/js/**/*.json', 'chaohuo/*.html']) /*后面本地html文件的路徑,可自行配置*/
          .pipe(revCollector(
            { replaceReved:true }
            ))
          .pipe(gulp.dest('dist/chaohuo')); /*Html更換css、js文件版本,和本地html文件的路徑一致*/
  });
  gulp.task('dev', function (done) {
      condition = false;
      runSequence(
          ['revJs'],
          ['revHtml'],
    done);});
    gulp.task('default', ['js','dev']);
}
module.exports = haha;

天啊,我本來想一步步來寫清楚點的,沒想到一下子把版本號相關(guān)的也都寫進去了,那就算了吧,一起來吧。

下面是gulpfile.js文件:

var haha= require('./gulpfile.prod.js');
haha();

基本工作已經(jīng)完成一大半了,還有一個忘記說了。如果你用到了es6語法,千萬別忘記配置一個.babelrc文件.

.babelrc內(nèi)容:

  "presets": [
    "es2015",
  ],
  "plugins": [
    "transform-remove-strict-mode"http://這個插件就是添加版本號的關(guān)鍵。
  ]
}

有的小伙伴可能會遇到版本號不斷疊加的問題,還記得{ replaceReved:true }這個嗎,前面有看一下,記得添加這個。還有最后一步node_modules我們要更改一些代碼,來吧,我下的最新的包(如果你用的老的,也是差不多的改法),替換下。

gulp-path里的index.js兩個return的東西都改掉:

return modifyFilename(pth, (filename, ext) => `${filename}-${hash}${ext}`);改為return modifyFilename(pth, (filename, ext) => `${filename}${ext}`);

return modifyFilename(pth, (filename, ext) => filename.replace(new RegExp(`-${hash}$`), '') + ext);改為return modifyFilename(pth, (filename, ext) => filename + ext);

gulp-rev-collector里的index.js:

大概128行左右 

patterns.push( escPathPattern( (path.dirname(key) === '.' ? '' : closeDirBySep(path.dirname(key)) ) )
+ path.basename(key, path.extname(key))
.split('.')
.map(function(part){
return escPathPattern(part) + '(' + opts.revSuffix + ')?';
})
.join('\\.')
+ patternExt
);

這段改為

patterns.push( escPathPattern( (path.dirname(key) === '.' ? '' : closeDirBySep(path.dirname(key)) ) + path.basename(key, path.extname(key)) ) + opts.revSuffix + escPathPattern( path.extname(key) ) + "(\\?v=(\\d|[a-z]){8,10})*" );

這里相關(guān)的也是網(wǎng)上查了很多相關(guān)的資料,不過好像都是一些老版本,并且gulp-rev里的文件不用修改,這里也經(jīng)過多次測試,以上基本可用。

好了,離成功不遠了,cmd運行下gulp命令,ok,基本完成,可以去查看下啦!

注意:所有require的東西記得npm安裝哦,卡的話就cnpm,不多說。

還有由于很多東西都是手打的,可能會有部分拼寫呀,文件路徑的錯誤,記得檢查更改哦。

本來想詳細寫一寫的,今天就這樣吧,開小差到這里結(jié)束,小姐姐也要去搬磚啦。有問題可發(fā)我,我有時間會回的。有點亂,勿怪。

相關(guān)文章

  • NodeJS http模塊用法示例【創(chuàng)建web服務器/客戶端】

    NodeJS http模塊用法示例【創(chuàng)建web服務器/客戶端】

    這篇文章主要介紹了NodeJS http模塊用法,結(jié)合實例形式分析了node.js創(chuàng)建web服務器與客戶端,進行HTTP通信的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • node的process以及child_process模塊學習筆記

    node的process以及child_process模塊學習筆記

    這篇文章主要介紹了node的process以及child_process模塊學習筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • node使用promise替代回調(diào)函數(shù)

    node使用promise替代回調(diào)函數(shù)

    這篇文章主要介紹了node使用promise替代回調(diào)函數(shù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Node.js log4js日志管理詳解

    Node.js log4js日志管理詳解

    日志對任何的應用來說都是至關(guān)重要的,下面這篇文章主要給大家介紹了關(guān)于Node.js log4js日志管理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-07-07
  • Windows安裝Node.js報錯:2503、2502的解決方法

    Windows安裝Node.js報錯:2503、2502的解決方法

    這篇文章主要給大家介紹了關(guān)于在Windows系統(tǒng)下安裝Node.js報錯:2503、2502的解決方法,文中將解決的方法一步步介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-10-10
  • Node.js 異步編程之 Callback介紹(一)

    Node.js 異步編程之 Callback介紹(一)

    這篇文章主要介紹了Node.js 異步編程之 Callback介紹(一),本文用實例講解Callback的相關(guān)知識,本文是第一篇,下一篇小編會跟進,需要的朋友可以參考下
    2015-03-03
  • Nodejs高擴展性的模板引擎 functmpl簡介

    Nodejs高擴展性的模板引擎 functmpl簡介

    本文給大家分享的是一款nodejs高擴展性的模板引擎functmpl的簡單介紹以及用法詳解,有需要的小伙伴可以參考下
    2017-02-02
  • Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    這篇文章主要介紹了Node.js+Express+Vue+MySQL+axios的項目搭建全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • nodejs中簡單實現(xiàn)Javascript Promise機制的實例

    nodejs中簡單實現(xiàn)Javascript Promise機制的實例

    這篇文章主要介紹了nodejs中簡單實現(xiàn)Javascript Promise機制的實例,本文在nodejs中簡單實現(xiàn)一個promise/A 規(guī)范,需要的朋友可以參考下
    2014-12-12
  • package.json各個屬性說明詳解

    package.json各個屬性說明詳解

    這篇文章主要介紹了package.json各個屬性說明詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論