首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与浏览器同步一起使用一体式加载插件?

如何与浏览器同步一起使用一体式加载插件?
EN

Stack Overflow用户
提问于 2015-10-28 10:27:33
回答 1查看 4.3K关注 0票数 4

在我的Gulp用法中,我开始认为将任务拆分成单独的文件是有意义的。

为此,我希望使用gulp-load-plugins,但是尽管我的任务运行,Browser-Sync似乎没有触发/做任何事情。

这是我脱光衣服后的装置。不知道我哪里出问题了!

gulpfile.js

代码语言:javascript
复制
var gulp = require('gulp'),
    plugins = require('gulp-load-plugins')();

function getTask(task) {
    return require('./gulp/tasks/' + task)(gulp, plugins);
}

gulp.task('browser-sync', getTask('browser-sync'));
gulp.task('bs-reload', getTask('bs-reload'));
gulp.task('scripts', getTask('scripts'));

gulp.task('default', ['browser-sync'], function(){
    gulp.watch('src/js/**/*.js', ['scripts']);
});

scripts.js (杯状任务)

代码语言:javascript
复制
var browserSync = require('browser-sync').create();

module.exports = function(gulp, plugins) {

    return function() {

        return gulp.src([
            'src/js/plugins/**', 
            'src/js/app.js', 
            '!src/js/{libraries,libraries/**}'
        ])
        .pipe(plugins.plumber({
            errorHandler: function(error) {
            console.log(error.message);
            this.emit('end');
        }}))
        .pipe(plugins.concat('app.js'))
        .pipe(gulp.dest('dist/js/'))
        .pipe(plugins.rename({
            suffix: '.min'
        }))
        .pipe(plugins.uglify({
            preserveComments: 'none'
            //preserveComments: 'some'
        }))
        .pipe(gulp.dest('dist/js/')) // Seems okay up until here...
        .pipe(browserSync.reload({   // ...but this never seems to fire!
            stream: true
        }));

    };

};

您会注意到,我需要在我的scripts.js文件中使用Browser-Sync,但这是因为做了plugins.Browser-Sync不起作用。我在某个地方读到,这是因为Browser-Sync实际上不是一个Gulp插件。

因此,虽然我没有任何错误,浏览器同步似乎启动了up...from然后,我的脚本任务可以工作,但它不触发BrowserSync部分。

任何帮助都非常感谢!

PS,如果有帮助,这是我的package.json文件(请注意,上面我向您展示的是我的gulpfile.js的回退版本)。

package.json

代码语言:javascript
复制
{
  "name": "MichaelPumo",
  "version": "1.0.0",
  "description": "A frontend Gulp project for WordPress by Michael Pumo.",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "MichaelPumo",
  "license": "MIT",
  "devDependencies": {
    "browser-sync": "2.6.5",
    "gulp-postcss": "~6.0.0",
    "autoprefixer-core": "~5.2.1",
    "gulp-sourcemaps": "~1.5.2",
    "gulp-concat": "2.5.2",
    "gulp-plumber": "1.0.0",
    "gulp-rename": "1.2.2",
    "gulp-sass": "2.0.4",
    "gulp-uglify": "1.2.0",
    "gulp": "~3.9.0",
    "node-neat": "~1.7.2",
    "gulp-svgmin": "~1.2.0",
    "gulp-image-optimization": "~0.1.3",
    "gulp-load-plugins": "~1.0.0"
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-28 12:54:46

对于任何想知道或不知道这一点的人,请注意,在默认情况下,gulp-load-plugins只适用于以'gulp-‘为前缀的NPM包。

幸运的是,您可以改变这种行为,并将搜索作为如下选项:

gulpfile.js

代码语言:javascript
复制
var gulp = require('gulp'),
    plugins = require('gulp-load-plugins')({
        pattern: '*'
    });

在任务中,您现在可以将Browser-Sync引用为plugins.browserSync,如下所示:

浏览器-sync.js (Gulp任务)

代码语言:javascript
复制
'use strict';

module.exports = function(gulp, plugins) {

    return function() {

        plugins.browserSync.init({
            port: 8080,
            proxy: {
                target: 'http://localhost:8888/my-website-path/'
            }
        });

    };

};

希望这能帮到别人!

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33388559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档