运行 使用本地 deps 的 npm 脚本

Run npm scripts using local deps

目前我 运行 npm 脚本以这种方式使用本地部门:

package.json:

  "scripts": {
    "test": "node ./node_modules/karma/bin/karma start",
    "node-test": "node ./node_modules/jasmine/bin/jasmine",
    "build": "node ./node_modules/gulp/bin/gulp build"
  },

我不想使用全局 deps,因为我可能会忘记将 deps 添加到 package.json。这样,当缺少本地 dep 时,我会收到一条错误消息,并且我没有问题,因为某些 dep 未在全局安装,例如业力插件。

有没有更好(更短)的方法来使用本地库定义 npm 脚本?这个 travis 兼容吗?

编辑:

如果不是很明显,我在全局安装了相同的库,但我想使用这些项目的本地安装。这意味着当我使用 karma start 启动 karma 时,全局安装的版本将启动 karma 服务器,这意味着如果我没有全局安装所有 karma 插件,那么我会出错。

我遇到的另一个问题 windows,因此此处描述的解决方案:How to use package installed locally in node_modules? 不起作用。 Windows 不识别 #!/bin/sh#!/usr/bin/env node 头部分,据我所知没有 sh 命令。至少不在 webstorm 终端。 Git bash 有 sh 命令,但我想 运行 来自 webstorm 终端的这些 npm 脚本。

一种可能的解决方案是以某种方式修复 webstorm,以便它可以从终端使用 sh。之后我可以使用 $(npm bin) 我想。但这只是一个猜测。不知道能不能做到。

npm 在使用 npm run(包括两个 "magic" 快捷方式执行命令 运行 之前自动将路径 ./node_modules/.bin 添加到您的 PATH env npm startnpm test)

npm scripts docs

您可以通过以下方式进行设置:

"scripts": {
   "test": "karma start",
   "node-test": "jasmine",
   "build": "gulp build"
}

假设您在 devDependenciesdependencies 中列出了 karma、jasmine 和 gulp-cli(以便在执行 npm install 时安装它们)

是的,它与 travis 兼容。这是一个使用 tap 在 travis 上测试的包示例,它作为模块安装在本地:

https://github.com/scriptoLLC/couchdown/