我试图让npm在脚本文件夹上进行构建浏览器化。问题是,我在Windows上做文件夹/ * .js似乎不起作用。我已尝试全局安装glob,但每当我运行一个构建命令时,错误就会回来说"找不到模块&#c; \ www \ project \ static \ js \ components * .js&# 39 ;.
这是我的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"
}
任何人都知道我做错了什么?
答案 0 :(得分:8)
我不认为你做错了什么;这基本上是Windows shell /控制台/命令提示符的限制,尽管浏览器可以改进'避开它并使用glob / node-glob代替。我不确定browserify,但是jshint很相似。
一些想法:
尝试传递根目录名称。这个功能不那么强大,但似乎与jshint
一起工作得很好:
https://github.com/jshint/jshint/issues/1904
使用cygwin作为你运行的shell。它为Windows带来了很多功能。
调整或请求对browserify(和jshint,以及......?)进行调整,以便调用glob库来处理这些与文件相关的参数。相比: https://github.com/jshint/jshint/issues/1998
用翻译工具包裹所说的工具'这样https://www.npmjs.com/package/build-jshint。请注意,这是明确设计用于支持**
通配符等。
只是猜测,但可能还有一种方法
使用PowerShell(最近版本的Windows附带 - 请参阅Get-ChildItem
命令)
或Hamilton C shell(我认为使用...
代替**
)或其他东西,作为你的shell。
使用带有/r
的循环来递归到子文件夹。我不推荐这个 - 特定于Windows,不是非常可链接 - 但是' wint'以下命令设置工作' (如果我在npm run wint
文件中包含以下内容,则使用package.json
调用)。
循环(注意:将下面的输出重定向到文件并不简单>
,因为...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
。
相关: