窗口npm中的全局通配符

我试图让npm在一个脚本文件夹上build立一个浏览器。 问题是,我在窗户上,做文件夹/ *。JS似乎并没有工作。 我已经尝试全局安装glob,但每当我运行一个生成命令,错误回来说:“无法find模块”c:\ www \ project \ static \ js \ components * .js'。

这是我的package.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" } 

任何人都知道我在做什么错了?

我不认为你做错了什么; 这基本上是Windowsshell/控制台/命令提示符的一个限制,尽pipe可以“改进”浏览器来避开它,并使用glob / node-glob代替。 我不确定有关browserify,但jshint是类似的。

一些想法:

  • 尝试传递根目录名称。 这是不太强大,但似乎用jshint足够jshint : https : //github.com/jshint/jshint/issues/1904

  • 使用cygwin作为你运行npm的shell。 它给Windows带来了很多* nix的力量。

  • 调整或请求调整browserify(和jshint,…?),以便他们调用glob库来处理这些文件相关的参数。 比较: https : //github.com/jshint/jshint/issues/1998

  • 把这些工具用“翻译器”包装起来,例如https://www.npmjs.com/package/build-jshint 。 请注意,这是明确的devise,以支持**通配符等

只是猜测,但也可能有办法

  • 使用PowerShell(随Windows的最新版本附带 – 请参阅Get-ChildItem命令)

  • 或者哈密尔顿C shell(使用...而不是** ,我认为)或者别的东西,作为你的shell。

  • 使用/r的循环recursion到子文件夹中。 我不推荐这个 – 特定于Windows的,不是非常可链接的,但是如果我在package.json文件中包含以下内容,那么下面设置的'wint'命令会'工作'(用npm run wint调用)。

(注意:redirect下面的输出到一个文件是不是一个简单的>因为...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", }, 

但是上面的命令通常不能用于跨平台。 另外,使用另外一个shell,你不能默认从shift+right-click一个文件夹和“在这里打开命令窗口”。

有关: