npm 运行 <cmd> 运行缓慢
npm run <cmd> works slow
我过去常常通过 Makefile 运行 各种命令,但对于 nodejs 项目 package.json 是放置这些东西的更合适的地方。
运行 通过 npm 命令效果很好,但与命令时执行相比非常慢。
$ time ./node_modules/.bin/jshint . && ./node_modules/.bin/jscs .
real 0m0.759s
user 0m0.524s
sys 0m0.085s
No code style errors found.
$ time npm run lint
> @ lint /path/to/project
> jshint . && jscs .
No code style errors found.
real 0m2.246s
user 0m1.637s
sys 0m0.277s
可以加速吗?
upd. 我的 package.json:
{
"devDependencies": {
"jscs": "^1.12.0",
"jshint": "^2.6.3"
},
"scripts": {
"lint": "jshint . && jscs ."
}
}
upd2. 我用错误的方式测量了时间。甘特在他的评论中指出了这一点。现在这两个时间看起来很相似(相差 100 毫秒)。
$ time sh -c './node_modules/.bin/jshint . && ./node_modules/.bin/jscs .'
No code style errors found.
real 0m1.704s
user 0m1.245s
sys 0m0.177s
$ time npm run lint
> @ lint /path/to/project
> jshint . && jscs .
No code style errors found.
real 0m1.822s
user 0m1.621s
sys 0m0.198s
这不是 npm 的错,事实上它甚至可以更准确地测量时间。
让我们看看你做了什么。
time npm run lint
将调用时间,然后按顺序调用您的任务。 time
将在 npm
退出时停止占用所需的时间,它会在您的任务完成后停止 运行ning。这里只有轻微的开销,脚本按预期工作。
然而,time ./node_modules/.bin/jshint . && ./node_modules/.bin/jscs .
将调用 time
,这将调用 jshint
。一旦jshint
退出,时间也会退出,jscs
将是运行。这也是为什么在您的示例中输出顺序混淆的原因。
要在没有 npm 的情况下获得准确的时间测量值,请尝试 time sh -c './node_modules/.bin/jshint . && ./node_modules/.bin/jscs .'
我过去常常通过 Makefile 运行 各种命令,但对于 nodejs 项目 package.json 是放置这些东西的更合适的地方。
运行 通过 npm 命令效果很好,但与命令时执行相比非常慢。
$ time ./node_modules/.bin/jshint . && ./node_modules/.bin/jscs .
real 0m0.759s
user 0m0.524s
sys 0m0.085s
No code style errors found.
$ time npm run lint
> @ lint /path/to/project
> jshint . && jscs .
No code style errors found.
real 0m2.246s
user 0m1.637s
sys 0m0.277s
可以加速吗?
upd. 我的 package.json:
{
"devDependencies": {
"jscs": "^1.12.0",
"jshint": "^2.6.3"
},
"scripts": {
"lint": "jshint . && jscs ."
}
}
upd2. 我用错误的方式测量了时间。甘特在他的评论中指出了这一点。现在这两个时间看起来很相似(相差 100 毫秒)。
$ time sh -c './node_modules/.bin/jshint . && ./node_modules/.bin/jscs .'
No code style errors found.
real 0m1.704s
user 0m1.245s
sys 0m0.177s
$ time npm run lint
> @ lint /path/to/project
> jshint . && jscs .
No code style errors found.
real 0m1.822s
user 0m1.621s
sys 0m0.198s
这不是 npm 的错,事实上它甚至可以更准确地测量时间。
让我们看看你做了什么。
time npm run lint
将调用时间,然后按顺序调用您的任务。 time
将在 npm
退出时停止占用所需的时间,它会在您的任务完成后停止 运行ning。这里只有轻微的开销,脚本按预期工作。
time ./node_modules/.bin/jshint . && ./node_modules/.bin/jscs .
将调用 time
,这将调用 jshint
。一旦jshint
退出,时间也会退出,jscs
将是运行。这也是为什么在您的示例中输出顺序混淆的原因。
要在没有 npm 的情况下获得准确的时间测量值,请尝试 time sh -c './node_modules/.bin/jshint . && ./node_modules/.bin/jscs .'