2014-12-21 47 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