2014-12-21 9 views
6

Sto cercando di ottenere npm per eseguire una build browserify su una cartella di script. Il problema è che sono su Windows e faccio la cartella/*. Js non sembra funzionare. Ho provato a installare glob globalmente, ma ogni volta che eseguo un comando di build, l'errore ritorna dicendo "Impossibile trovare il modulo 'c: \ www \ project \ static \ js \ components * .js'.Glob jolly in windows npm

Ecco il mio pacchetto .json:?

{ 
    "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" 
} 

Qualcuno sa che cosa sto facendo male

+0

Sto avendo un problema simile con jshint. Come test diagnostico, ho deciso di eseguire 'npm install -g jshint' che ha installato jshint 2.5.11. Quando ho eseguito 'jshint **. Js' da lì, è tornato' ERRORE: Impossibile aprire **. Js' Ho deciso di provare git bash e di eseguire 'jshint **. Js' ha funzionato da lì. Tuttavia, impostando uno script come "" lint ":" jshint **. Js "' con 'npm run lint' ha avuto esito negativo anche con il comando Error. – ojintoad

+0

E riguardo 'browserify" static/js/components/*. Js "' invece di 'browserify static/js/components/*. Js'? – inf3rno

risposta

8

non credo che stai facendo qualcosa di sbagliato, questo è fondamentalmente una limitazione della shell di Windows/console/prompt dei comandi, sebbene browserify possa essere 'migliorato' per aggirare il problema e utilizzare glob/node-glob.Non sono sicuro di browserify, ma jshint è simile

Alcune idee:

solo indovinare, ma ci potrebbe anche essere un modo per

  • uso PowerShell (che viene fornito con le recenti versioni di Windows - vedi il comando Get-ChildItem)

  • o shell Hamilton C (usa ... invece di **, credo), o qualcos'altro, come la shell.

  • utilizzare un ciclo con /r per ricorrere in sottocartelle. Non sto raccomandando questo - specifico di Windows, non molto concatenabile - ma il comando 'wint' impostato qui sotto funziona '(invoca con npm run wint) se includo quanto segue nel mio file package.json.

ciclo per Windows (Nota: reindirizzare l'output di seguito a un file non è un semplice > perché ...do jshint %f > chk.txt sovrascrive stesso e ...do jshint %f > %f.chk.txt possono generare molti file chk.txt cosparsa intorno):

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

Ma i comandi sopra non sarebbero generalmente utilizzabili su più piattaforme. Inoltre, l'utilizzo di una shell alternativa non consente di default di poter eseguire shift+right-click in una cartella e "Apri finestra di comando qui".

correlati:

+0

Questo è davvero fantastico! Come faresti iniziare in una directory, quindi non passa attraverso node_modules? – Aarmora

+0

@Aarmora Ho paura di non aver guardato il npm per un bel po 'di tempo. Mi è appena capitato di notare questa domanda subito dopo aver combattuto le stesse limitazioni dei caratteri jolly durante l'utilizzo di jshint. –

+1

Questo ragazzo ha fatto per me 'per/r src /% f in (* .ts) do tslint% f'. Grazie per tutto l'aiuto! – Aarmora