Heim > Web-Frontend > js-Tutorial > So verwenden Sie gulp, das auf Node.js basierende JavaScript-Projekterstellungstool

So verwenden Sie gulp, das auf Node.js basierende JavaScript-Projekterstellungstool

不言
Freigeben: 2018-06-30 15:06:35
Original
1456 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Verwendung des auf Node.js basierenden JavaScript-Projektkonstruktionstools vorgestellt. Jetzt kann ich es mit Ihnen teilen.

Vielleicht Wenn Sie Grunt verwendet haben, sind Sie mit Amway Gulp vertraut. Werfen wir einen Blick auf das Tutorial zur Verwendung von Gulp, einem auf Node.js basierenden JavaScript-Projektkonstruktionstool

npm install gulp --save-dev
Nach dem Login kopieren

Was ist Gulp?
gulp ist eine neue Generation von Front-End-Projekterstellungstools. Sie können gulp und seine Plug-Ins verwenden, um Ihren Projektcode (less, sass) zu kompilieren, Ihren JS- und CSS-Code zu komprimieren und sogar Ihren Für Bilder verfügt gulp nur über eine geringe API-Menge und ist daher sehr einfach zu erlernen. Gulp verwendet die Stream-Methode, um Inhalte zu verarbeiten. Node hat eine Reihe von Automatisierungstools hervorgebracht, wie Bower, Yeoman, Grunt usw.

Ähnlichkeiten und Unterschiede zwischen gulp und grunt
Einfach zu bedienen: Durch die Verwendung einer Code-over-Configuration-Strategie hält Gulp einfache Dinge einfach und komplexe Aufgaben beherrschbar.
Effizient: Durch die Nutzung der leistungsstarken Streams von Node.js müssen keine Zwischendateien auf die Festplatte geschrieben werden, sodass der Build schneller abgeschlossen werden kann.
Hohe Qualität: Die strengen Plugin-Richtlinien von Gulp stellen sicher, dass Plugins einfach sind und so funktionieren, wie Sie es erwarten.
Einfach zu erlernen: Durch die Reduzierung der API auf ein Minimum können Sie Gulp in kurzer Zeit erlernen. Der Aufbau funktioniert genau so, wie Sie es sich vorstellen: eine Reihe von Streaming-Pipes.
Da gulp in node.js geschrieben ist, müssen Sie npm auf Ihrem Terminal installieren. npm ist der Paketmanager für node.js, also installieren Sie node.js zuerst auf Ihrem Computer.

gulp-Installationsbefehl

sudo npm install -g gulp
Nach dem Login kopieren

Erstellen Sie eine neue package.json-Datei im Stammverzeichnis

npm init .
Nach dem Login kopieren

Installieren Sie das gulp-Paket

Geben Sie nach der Installation erneut gulp -v ein, um die Versionsnummer zu überprüfen. Wenn das folgende Bild Erfolg zeigt:

2016520182145165.jpg (570×166)

Installieren Sie die Plug-in
Gängige Plug-ins installieren:

Sass-Kompilierung (gulp-ruby-sass)
CSS-Präfix automatisch hinzufügen (gulp-autoprefixer)
CSS komprimieren (gulp-ruby-sass) minify- css)
JS-Code-Überprüfung (gulp-jshint)
JS-Dateien zusammenführen (gulp-concat)
JS-Code komprimieren (gulp-uglify)
Bilder komprimieren (gulp-imagemin)
Seite automatisch aktualisieren (gulp-livereload)
Bildcache, nur komprimiert, wenn das Bild ersetzt wird (gulp-cache)
Erinnerung ändern (gulp-notify)
Dateien löschen (del)
Zur Installation Für diese Plug-Ins müssen Sie den folgenden Befehl ausführen:

$ npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del --save-dev-save和-save-dev可以省掉你手动修改package.json文件的步骤。
Nach dem Login kopieren
rrree

Modul und Versionsnummer automatisch zum Abschnitt „Abhängigkeiten“ hinzufügen

npm install module-name -save
Nach dem Login kopieren

Modul und Versionsnummer automatisch zum Abschnitt „Abhängigkeiten“ hinzufügen
gulp-Befehl
Sie müssen nur 5 wissen. Ein gulp-Befehl

gulp.task(name[, deps], fn) definiert den Aufgabennamen: Aufgabenname deps: abhängig Aufgabenname fn: Rückruffunktion

gulp.run(tasks...): Führe so viele Aufgaben wie möglich parallel aus

gulp.watch(glob, fn): Wenn der Inhalt von glob Änderungen, fn ausführen

gulp.src(glob): Nach Bedarf festlegen Der Pfad der zu verarbeitenden Datei kann aus mehreren Dateien in Form eines Arrays oder einem regulären

<🎜 bestehen >gulp.dest(path[, Optionen]): Legen Sie den Pfad der generierten Datei fest

glob: kann ein direkter Dateipfad sein. Was es bedeutet, ist Mustervergleich.
gulp leitet die zu verarbeitenden Dateien über die Pipeline-API (pipe()) an entsprechende Plug-Ins weiter. Führen Sie Dateiverarbeitungsaufgaben über Plug-Ins aus.

npm install module-name -save-dev
Nach dem Login kopieren

gulp.task Diese API wird zum Erstellen von Aufgaben verwendet. Sie können $gulp [Standard] in der Befehlszeile eingeben (Klammern bedeuten optional), um die oben genannten Aufgaben auszuführen.

offizielle gulp-API-Dokumentation: https://github.com/gulpjs/gulp/blob/master/docs/API.md

Gulp-Plug-in-Sammlung: http://gulpjs. com/plugins/


Beginnen Sie mit dem Erstellen des Projekts
Erstellen Sie eine neue gulpfile.js-Datei im Stammverzeichnis des Projekts und fügen Sie den folgenden Code ein:

gulp.task(&#39;default&#39;, function () {...});
Nach dem Login kopieren

Hinweis: Der Name von Die Datei gulpfile.js kann nicht geändert werden.

Das Projekt muss Uglify verwenden und Plug-Ins umbenennen. Führen Sie zur Installation den folgenden Befehl aus:

//在项目根目录引入gulp和uglify插件
var gulp = require(&#39;gulp&#39;);
var uglify = require(&#39;gulp-uglify&#39;);

gulp.task(&#39;compress&#39;,function(){
  return gulp.src(&#39;script/*.js&#39;)
  .pipe(uglify())
  .pipe(gulp.dest(&#39;dist&#39;));
});
Nach dem Login kopieren

Nehmen Sie als Beispiel mein Projekt und geben Sie das Verzeichnis ein, in dem sich gulpfile.js befindet:

npm install --save-dev gulp-uglify
npm install --save-dev gulp-rename
Nach dem Login kopieren

und geben Sie dann ein:

var gulp = require(&#39;gulp&#39;);
var uglify = require(&#39;gulp-uglify&#39;);
var rename = require(&#39;gulp-rename&#39;);

gulp.task(&#39;compress&#39;,function(){
  return gulp.src(&#39;script/*.js&#39;)
  .pipe(uglify())
  .pipe(rename(&#39;jquery.ui.min.js&#39;))
  .pipe(gulp.dest(&#39;dist&#39;));
});
Nach dem Login kopieren

该命令会安装package.json下的全部依赖,如下图所示:

2016520182629058.jpg (800×319)

完整的gulpfile.js

// 载入外挂
var gulp = require(&#39;gulp&#39;), 
  sass = require(&#39;gulp-ruby-sass&#39;),
  autoprefixer = require(&#39;gulp-autoprefixer&#39;),
  minifycss = require(&#39;gulp-minify-css&#39;),
  jshint = require(&#39;gulp-jshint&#39;),
  uglify = require(&#39;gulp-uglify&#39;),
  imagemin = require(&#39;gulp-imagemin&#39;),
  rename = require(&#39;gulp-rename&#39;),
  clean = require(&#39;gulp-clean&#39;),
  concat = require(&#39;gulp-concat&#39;),
  notify = require(&#39;gulp-notify&#39;),
  cache = require(&#39;gulp-cache&#39;),
  livereload = require(&#39;gulp-livereload&#39;);
 
// 样式
gulp.task(&#39;styles&#39;, function() { 
 return gulp.src(&#39;src/styles/main.scss&#39;)
  .pipe(sass({ style: &#39;expanded&#39;, }))
  .pipe(autoprefixer(&#39;last 2 version&#39;, &#39;safari 5&#39;, &#39;ie 8&#39;, &#39;ie 9&#39;, &#39;opera 12.1&#39;, &#39;ios 6&#39;, &#39;android 4&#39;))
  .pipe(gulp.dest(&#39;dist/styles&#39;))
  .pipe(rename({ suffix: &#39;.min&#39; }))
  .pipe(minifycss())
  .pipe(gulp.dest(&#39;dist/styles&#39;))
  .pipe(notify({ message: &#39;Styles task complete&#39; }));
});
 
// 脚本
gulp.task(&#39;scripts&#39;, function() { 
 return gulp.src(&#39;src/scripts/**/*.js&#39;)
  .pipe(jshint(&#39;.jshintrc&#39;))
  .pipe(jshint.reporter(&#39;default&#39;))
  .pipe(concat(&#39;main.js&#39;))
  .pipe(gulp.dest(&#39;dist/scripts&#39;))
  .pipe(rename({ suffix: &#39;.min&#39; }))
  .pipe(uglify())
  .pipe(gulp.dest(&#39;dist/scripts&#39;))
  .pipe(notify({ message: &#39;Scripts task complete&#39; }));
});
 
// 图片
gulp.task(&#39;images&#39;, function() { 
 return gulp.src(&#39;src/images/**/*&#39;)
  .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
  .pipe(gulp.dest(&#39;dist/images&#39;))
  .pipe(notify({ message: &#39;Images task complete&#39; }));
});
 
// 清理
gulp.task(&#39;clean&#39;, function() { 
 return gulp.src([&#39;dist/styles&#39;, &#39;dist/scripts&#39;, &#39;dist/images&#39;], {read: false})
  .pipe(clean());
});
 
// 预设任务
gulp.task(&#39;default&#39;, [&#39;clean&#39;], function() { 
  gulp.start(&#39;styles&#39;, &#39;scripts&#39;, &#39;images&#39;);
});
 
// 看守
gulp.task(&#39;watch&#39;, function() {
 
 // 看守所有.scss档
 gulp.watch(&#39;src/styles/**/*.scss&#39;, [&#39;styles&#39;]);
 
 // 看守所有.js档
 gulp.watch(&#39;src/scripts/**/*.js&#39;, [&#39;scripts&#39;]);
 
 // 看守所有图片档
 gulp.watch(&#39;src/images/**/*&#39;, [&#39;images&#39;]);
 
 // 建立即时重整伺服器
 var server = livereload();
 
 // 看守所有位在 dist/ 目录下的档案,一旦有更动,便进行重整
 gulp.watch([&#39;dist/**&#39;]).on(&#39;change&#39;, function(file) {
  server.changed(file.path);
 });
 
});
Nach dem Login kopieren

注:pipe()是stream模块里传递数据流的一个方法,第一个参数为插件方法,插件会接收从上游流下的文件,进行处理加工后,再往下流。

gulp.task(&#39;任务名称&#39;, function () {
  return gulp.src(&#39;文件路径&#39;)
    .pipe(...)
    .pipe(...)
    // 直到任务的最后一步
    .pipe(...);
});
Nach dem Login kopieren

gulp插件
gulp-gh-pages:使用gulp来把markdown生成html文档并上传到git pages上
https://github.com/shinnn/gulp-gh-pages

var gulp = require(&#39;gulp&#39;);

var ghPages = require(&#39;gulp-gh-pages&#39;);



gulp.task(&#39;deploy&#39;, function() {

 return gulp.src(&#39;./dist/**/*&#39;)

  .pipe(ghPages());

});
Nach dem Login kopieren

gulp-jade插件:将jade编译成html文件
gulp-less插件:将less编译成css文件

var less = require(&#39;gulp-less&#39;);

var path = require(&#39;path&#39;);

 

gulp.task(&#39;less&#39;, function () {

 return gulp.src(&#39;./less/**/*.less&#39;)

  .pipe(less({

   paths: [ path.join(__dirname, &#39;less&#39;, &#39;includes&#39;) ]

  }))

  .pipe(gulp.dest(&#39;./public/css&#39;));

});
gulp-live-server 插件:方便的,轻量级的服务器

var gulp = require(&#39;gulp&#39;);

 var gls = require(&#39;gulp-live-server&#39;);

 gulp.task(&#39;serve&#39;, function() {

 //1. serve with default settings

 var server = gls.static(); //equals to gls.static(&#39;public&#39;, 3000);

 server.start();



 //2. serve at custom port

 var server = gls.static(&#39;dist&#39;, 8888);

 server.start();



 //3. serve multi folders

 var server = gls.static([&#39;dist&#39;, &#39;.tmp&#39;]);

 server.start();



 //use gulp.watch to trigger server actions(notify, start or stop)

 gulp.watch([&#39;static/**/*.css&#39;, &#39;static/**/*.html&#39;], function (file) {

  server.notify.apply(server, [file]);

 });

});
Nach dem Login kopieren

gulp-livereload,可以实时保存刷新,那样就不用按F5和切换界面了
gulp-load-plugins:在你的package.json文件中自动加载任意的gulp插件

$ npm install --save-dev gulp-load-plugins
Nach dem Login kopieren

例如一个给定的package.json文件如下:

{

  "dependencies": {

    "gulp-jshint": "*",

    "gulp-concat": "*"

  }

}
Nach dem Login kopieren

在gulpfile.js中添加如下代码:

var gulp = require(&#39;gulp&#39;);

var gulpLoadPlugins = require(&#39;gulp-load-plugins&#39;);

var plugins = gulpLoadPlugins();
plugins.jshint = require(&#39;gulp-jshint&#39;);

plugins.concat = require(&#39;gulp-concat&#39;);
Nach dem Login kopieren

gulp-babel:gulp 的babel插件,

$ npm install --save-dev gulp-babel babel-preset-es2015
Nach dem Login kopieren

使用方法:

const gulp = require(&#39;gulp&#39;);
const babel = require(&#39;gulp-babel&#39;);

gulp.task(&#39;default&#39;, () => {
  return gulp.src(&#39;src/app.js&#39;)
    .pipe(babel({
      presets: [&#39;es2015&#39;]
    }))
    .pipe(gulp.dest(&#39;dist&#39;));
});
Nach dem Login kopieren

官方github: https://github.com/gulpjs/gulp

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

Node.js中如何合并两个复杂对象的介绍

关于Node.js 子进程与应用的介绍

Webpack优化配置缩小文件搜索范围的介绍

Das obige ist der detaillierte Inhalt vonSo verwenden Sie gulp, das auf Node.js basierende JavaScript-Projekterstellungstool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage