【问题标题】:Does browserify API need vinyl object?browserify API 是否需要乙烯基对象?
【发布时间】:2014-09-08 15:55:24
【问题描述】:

我正在尝试浏览一些角度文件并将它们集成到我的 gulp 任务中。在尝试获取 browserify 的 gulp 插件时,我遇到了这个 https://github.com/gulpjs/plugins/issues/47

Browserify 应该作为一个独立的模块使用。它返回一个流并计算出您的依赖关系图。如果您需要乙烯基对象,请使用 browserify +vinyl-source-stream

我很惭愧地说我不知道​​乙烯基物体是什么,在读了一点之后我发现了这个。

Vinyl 是一个描述文件的非常简单的元数据对象。

显然你需要乙烯基适配器来暴露.src, .watch and .dest?所以,我猜vinyl-source-stream 是那种适配器?我想我不明白的是,当我可以简单地执行此操作时,为什么我需要在 browserify 中使用乙烯基对象:-

var gulp = require('gulp'),
    browserify = require('browserify');

gulp.task('browserify', function(){
    browserify('./js/index.js')
    .bundle()
    .pipe(gulp.dest('./js/bundle.js'));

而必须这样做:-

var gulp = require('gulp'),
    source = require('vinyl-source-stream'),
    browserify = require('browserify');

gulp.task('browserify', function(){
    browserify('./js/index.js')
    .bundle()
    .pipe(source('./js/index.js')) //this line in particular
    .pipe(gulp.dest('./js/bundle.js'));

如果这没有意义,请道歉。如果需要更多解释,我将对其进行编辑。

【问题讨论】:

    标签: node.js npm gulp browserify


    【解决方案1】:

    您不能只通过管道连接到字符串 './js/bundle.js'。您使用source 将名称附加到bundle 创建的新文件,然后将文件流通过管道传输到它的目标目录:

    var gulp = require('gulp'),
        source = require('vinyl-source-stream'),
        browserify = require('browserify');
    
    gulp.task('browserify', function(){
       return browserify('./js/index.js')
        .bundle()
        .pipe(source('bundle.js')) //this line in particular
        .pipe(gulp.dest('./js'));
    

    【讨论】:

    • 糟糕,我在这方面做得不好。编辑了原文。但是,我的问题是为什么我必须使用 .bundle().pipe(source('bundle/js')).pipe(gulp.dest('bundle.js')) 而不是仅仅将其传送到目的地。 .bundle().pipe(gulp.dest('bundle.js'));
    • gulp.dest 将文件流通过管道传输到目录中,它不处理重命名单个文件。
    • 啊。我懂了。现在这很有意义。感谢您的澄清。
    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多