2015-01-27 2 views
2

최근에 내 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 파일 - 나는 app.coffee를 저장할 때

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를 다시 저장하지 않으면 번들되지 않습니다. 나는이 같은 디렉토리 구조에 필요한 몇 가지 사용자 지정 라이브러리를 가지고 : 나는 globbing을 시도

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

을하지만, 그것은 단지 생산 및 오류, 나는 그것을 다시 작성되기 전과 다른 대부분의 모든 설정 . 어떤 아이디어?

+0

정말로'devMode'가 truey로 설정되어 있습니까? 그렇지 않다면'watchify.args'가'bundleConfig'에 추가되지 않을 것입니다. – Ben

+0

@ben 예, 있습니다. 나는 그것을 확인했다. – thesublimeobject

+0

간단한 설정에서 문제를 다시 만들고 문제가 발생할 때까지 반복해서 추가하십시오. – firstdoit

답변

0

비슷한 상황이있었습니다. 특정 폴더 또는 때때로 개별 파일에있는 파일은 컴파일되지만 변경 또는 저장 될 때 시계를 트리거하지는 않습니다.

기본적으로 OS X의 파일 시스템은 대소 문자를 구분하지 않기 때문에 Browserify는 필요한 파일을 가져올 수 있지만 Watchify 유틸리티 기능은 혼란 스럽거나 해당 파일에 대한 첫 번째 장소에서 시작된 적이 없거나 Browserify 캐시에 원래 파일이로드 된 후 존재하지 않는 경로에서 업데이트 된 파일을 찾지 못했습니다.

내 require() 문에서 경로의 대소 문자를 수정하면 문제가 해결되었습니다. 또한, 프로그램 적으로 이것을 검사하기위한 플러그인이 있습니다 : https://github.com/zertosh/dep-case-verify

관련 문제