Browserify不看所需的文件

时间:2015-01-27 15:13:03

标签: coffeescript gulp browserify watchify

我最近重新编写了我的gulpfile,一切都运行得很好,如果不比以前更好,除了在保存时,我的主.coffee文件将捆绑,但没有一个必需的文件触发捆绑,我无法想象为什么。这是我的文件:

配置文件 -

neat = require('node-neat').includePaths
glob = require 'glob'
dest = "../bld"
src = "./src"

module.exports =

browserSync:
    proxy: "moovweb.dev/"
    ghostMode: 
        clicks: false
        location: false
        forms: false
        scroll: false

sass:
    src: "styl/src/**"
    dest: dest
    settings: 
        sourceComments: 'map',
        imagePath: '/img',
        errLogToConsole: true,
        includePaths: ['sass'].concat(neat)

markup:
    src: ['../*.php', '../inc/*.php', '../templates/*.php']

images:
    src: "/img/**"
    dest: dest + "/img"

browserify:
    bundleConfigs: [
        #entries: glob.sync('./js/src/**/*.coffee') 
        entries: './js/src/app.coffee'
        dest: dest
        extensions: ['.coffee']
        outputName: 'app.js'
        debug: true
    ]

browserify文件 -

browserify   = require 'browserify'
browserSync  = require 'browser-sync'
watchify     = require 'watchify'
bundleLogger = require '../util/bundleLogger'
gulp         = require 'gulp'
handleErrors = require '../util/handleErrors'
source       = require 'vinyl-source-stream'
config       = require('../config').browserify
_            = require 'lodash'

browserifyTask = (callback, devMode) ->

bundleQueue = config.bundleConfigs.length

browserifyThis = (bundleConfig) ->

    if devMode
        _.extend bundleConfig, watchify.args, debug: true
        bundleConfig = _.omit bundleConfig, ['external', 'require']

    b = browserify(bundleConfig)

    bundle = ->
        bundleLogger.start(bundleConfig.outputName)

        return b
            .bundle()
            .on 'error', handleErrors
            .pipe(source(bundleConfig.outputName))
            .pipe(gulp.dest(bundleConfig.dest))
            .on 'end', reportFinished
            .pipe(browserSync.reload
                stream: true
            )

    b = watchify(b)
    b.on 'update', bundle
    bundleLogger.watch(bundleConfig.outputName)

    reportFinished = ->
        bundleLogger.end(bundleConfig.outputName)

        if bundleQueue
            bundleQueue--
            if bundleQueue is 0
                callback()
                return

    return bundle()

config.bundleConfigs.forEach(browserifyThis)

gulp.task 'browserify', browserifyTask

module.exports = browserifyTask

当我保存app.coffee时,一切都很好。但是当我在app.coffee中保存任何.coffee文件时,除非我重新保存app.coffee,否则它不会捆绑。我有一些目录结构中需要的自定义库,如下所示:

/js
- app.coffee
- /lib
--lib-1.coffee
--lib-2.coffee
--etc.coffee

我已尝试使用globbing,但这只会产生错误,并且其他大部分内容都是在重新编写之前设置的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我有类似的情况。某些文件夹或有时单个文件中的文件将被编译,但在更改或保存时不会触发监视。

事实证明问题是由于默认情况下OS X的文件系统不区分大小写,所以当Browserify能够获取所需的文件时,我认为Watchify使用的实用程序功能在这些文件的第一个地方感到困惑或从未开始,或者Browserify缓存可能已加载原始文件,然后从未在不存在的路径中找到更新的文件。

在require()语句中修复路径的情况解决了这个问题。此外,还有一个用于以编程方式检查此插件的插件:https://github.com/zertosh/dep-case-verify