窗口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
一个文件夹和“在这里打开命令窗口”。
有关: