2015-04-30 32 views
2

我在嘗試排除文件時遇到Watchify問題(like so in Browserify)。Watchify Excluded File Compiling Issue

使用這個命令:

watchify scripts/main.js -o scripts/main.bundle.js -t strictify -v -x scripts/libs.js 

它編譯罰款在第一,但隨後進行任何更新,觀看文件時給出了一個錯誤。這是完整的輸出:

1036 bytes written to scripts/main.bundle.js (0.04 seconds) 

fs.js:430 
    binding.open(pathModule._makeLong(path), 
     ^
TypeError: path must be a string 
    at Object.fs.open (fs.js:430:11) 
    at OpenReq.process (/usr/lib/node_modules/watchify/node_modules/chokidar/node_modules/readdirp/node_modules/graceful-fs/graceful-fs.js:55:16) 
    at OpenReq.Req (/usr/lib/node_modules/watchify/node_modules/chokidar/node_modules/readdirp/node_modules/graceful-fs/graceful-fs.js:126:8) 
    at new OpenReq (/usr/lib/node_modules/watchify/node_modules/chokidar/node_modules/readdirp/node_modules/graceful-fs/graceful-fs.js:49:7) 
    at Object.open (/usr/lib/node_modules/watchify/node_modules/chokidar/node_modules/readdirp/node_modules/graceful-fs/graceful-fs.js:41:3) 
    at ReadStream.open (fs.js:1509:6) 
    at new ReadStream (fs.js:1496:10) 
    at Object.fs.createReadStream (fs.js:1450:10) 
    at Deps.readFile (/usr/lib/node_modules/watchify/node_modules/browserify/node_modules/module-deps/index.js:190:17) 
    at /usr/lib/node_modules/watchify/node_modules/browserify/node_modules/module-deps/index.js:365:14 

這是任何解決方法的已知問題?目前,我可以對-x scripts/libs.js進行編輯,併爲生產執行常規的Browserify構建(以排除文件),但對於開發而言,這會使Watchify任務稍慢。

感謝您的幫助!

+0

什麼是你watchify的版本? – lxe

+0

它看起來像3.2.0 –

回答

0

解決方法是完全跳過Watchify並使用nodemon來處理觀看。這是用於開發和生產的完整的package.json構建:

{ 
    "private": true, 
    "devDependencies": { 
     "node-sass": "latest", 
     "autoprefixer": "latest", 
     "browserify": "latest", 
     "strictify": "latest", 
     "uglify-js": "latest", 
     "nodemon": "latest" 
    }, 
    "scripts": { 
     "build:main:bundle": "browserify scripts/main.js -o scripts/main.bundle.js -x ./scripts/libs.js -t strictify", 
     "build:main:uglify": "uglifyjs scripts/main.bundle.js -c -o scripts/main.bundle.js", 
     "build:main": "npm run build:main:bundle && npm run build:main:uglify", 
     "build:libs:bundle": "browserify -r ./scripts/libs.js -o scripts/libs.bundle.js -t strictify", 
     "build:libs:uglify": "uglifyjs scripts/libs.bundle.js -c -o scripts/libs.bundle.js", 
     "build:libs": "npm run build:libs:bundle && npm run build:libs:uglify", 
     "build:styles": "node-sass --stdout --output-style compressed styles/styles.scss | autoprefixer -o styles/styles.css", 
     "build": "npm run build:main && npm run build:libs && npm run build:styles", 
     "watch:main": "nodemon -e js -w scripts -i scripts/main.bundle.js -x 'npm run build:main:bundle'", 
     "watch:styles": "nodemon -e scss -w styles -x 'npm run build:styles'", 
     "watch": "npm run watch:main & npm run watch:styles" 
    } 
} 

這允許使用這兩個命令用於發展(使用的手錶)和生產(使用編譯):

npm run watch 
npm run build 

唯一需要注意的是做手工

npm run build:libs 

每當更新腳本/ libs.js文件(其如jQuery /骨幹網/ TweenLite的在裏面,文件,所以你不應該有經常更新) 。有關完整示例,請參閱:Weblate

感謝NPM for Everything幫助找到解決的辦法,即使這不能解決直接Watchify問題...