Browserify не смотрит нужные файлы

Я недавно переписал свой 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, все в порядке. Но когда я сохраняю любой файл.coffee, необходимый в app.coffee, он не связывается, пока я не сохраню app.coffee заново. У меня есть несколько пользовательских библиотек, которые требуются в структуре каталогов, как это:

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

Я пытался использовать globbing, но это просто выдает ошибку, и большинство всего остального настроено так, как было до того, как я переписал его. Есть идеи?

1 ответ

У меня была похожая ситуация. Файлы в определенных папках или иногда отдельные файлы будут компилироваться, но не будут вызывать наблюдения при изменении или сохранении.

Оказывается, проблема была вызвана тем фактом, что по умолчанию файловая система OS X нечувствительна к регистру, поэтому, хотя Browserify удалось получить нужные ей файлы, я думаю, что служебные функции, которые использует Watchify, либо запутались, либо никогда не запускались в первое место для этих файлов, или, может быть, кэш Browserify был загружен с оригиналом, а затем никогда не находил обновленные файлы по несуществующим путям.

Исправление случая путей в моих инструкциях require() устранило проблему. Также есть плагин для проверки этой программы: https://github.com/zertosh/dep-case-verify

Другие вопросы по тегам