2014-12-21 46 views
6

我試圖讓npm在腳本文件夾上執行構建browserify。問題是,我在Windows上,並在做文件夾/ *。JS似乎並沒有工作。我已經嘗試過全局安裝glob,但是每當我運行構建命令時,錯誤就會回來說「找不到模塊」c:\ www \ project \ static \ js \ components \ .js'。以.json:窗口中的全局通配符npm

{ 
    "name": "TEST", 
    "description": "ITS ME MARIO", 
    "author": "JJ", 
    "version": "0.0.1", 
    "dependencies": { 
    "connect": "1.8.5", 
    "express": "2.5.2", 
    "jade": "0.20.0", 
    "mongoose": "3.8.x", 
    "socket.io": "0.8.7" 
    }, 
    "devDependencies": { 
    "vows": "0.5.x", 
    "mocha": "*", 
    "should": "*", 
    "jshint": "latest", 
    "browserify": "latest", 
    "rimraf": "latest", 
    "hashmark": "latest", 
    "stylus": "latest", 
    "glob": "latest" 

    }, 
    "scripts": { 
     "clean": "rimraf dist", 
     "test": "mocha test/", 
     "build:components-js": "browserify static/js/components/*.js > static/dist/components.js", 
     "build:app-js": "browserify static/js/script > static/dist/app.js", 
     "build:css": "stylus static/css/style.styl > static/dist/main.css", 
     "build": "npm run build:css && npm run build:components-js && npm run build:app-js" 

    }, 
    "engine": "node >= 0.6.6" 
} 

任何人都知道我做錯了

+0

我在與jshint類似的問題。 作爲診斷測試,我決定運行安裝了jshint 2.5.11的'npm install -g jshint'。當我從那裏運行'jshint **。js'時,它返回'ERROR:無法打開**。js' 我決定嘗試git bash,並從那裏運行'jshint **。js'。然而,使用'nint run lint'設置腳本如'lint':「jshint **。js」'也會因Error命令失敗。 – ojintoad

+0

怎麼樣'browserify「static/js/components/*。js」'而不是'browserify static/js/components/*。js'? – inf3rno

回答

8

我不認爲你做錯了什麼,這是基本的Windows外殼程序的限制/控制檯/命令提示符下,雖然browserify可以'改進'來回避,並使用glob/node-glob來代替。我不確定browserify,但jshint是類似的。

一些想法:

只是猜測,但也可能是一個辦法

  • 使用PowerShell(附帶了最新版本的Windows - 見Get-ChildItem命令)

  • 或漢密爾頓C shell(使用...而不是**,我想)或其他東西,作爲你的shell。

  • 使用循環與/r遞歸到子文件夾中。我不推薦這樣 - Windows特定的,不是非常可鏈接的,但如果我在我的package.json文件中包含以下內容,則下面設置的'wint'命令會'工作'(調用npm run wint)。

環的Windows(注:以下重定向輸出到一個文件不是一個簡單的>因爲...do jshint %f > chk.txt將覆蓋自身...do jshint %f > %f.chk.txt可產生周圍灑許多chk.txt文件):

"scripts": { 
    "lint": "jshint **.js", 
    "wint": "for /r %f in (*.js) do jshint %f", 
}, 

但是上面的命令通常不能用於跨平臺。另外,使用替代外殼程序,默認情況下,您無法在文件夾上使用shift+right-click,並且「在此處打開命令窗口」。

相關:

+0

這真的太棒了!你如何讓它在一個目錄中啓動,所以它不通過node_modules? – Aarmora

+0

@Aarmora恐怕我還沒有看過npm很長一段時間。在使用jshint時,我一直在處理相同的通配符限制之後不久就注意到了這個問題。 –

+1

這個人爲我做了'for/r src /%f(* .ts)do tslint%f'。感謝所有的幫助! – Aarmora