使用本地 deps 运行 npm 脚本

inf*_*rno 1 windows node.js npm webstorm travis-ci

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

包.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"
  },
Run Code Online (Sandbox Code Playgroud)

我不想使用全局 deps,因为我可能忘记将 deps 添加到 package.json 中。这样,当本地 dep 丢失时,我会收到一条错误消息,但不会遇到问题,因为某些 dep 未全局安装,例如 karma 插件。

是否有更好(更短)的方法来使用本地库定义 npm 脚本?这个特拉维斯兼容吗?

编辑:

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

我有Windows的另一个问题,所以这里描述的解决方案:如何使用本地安装的包在node_modules?不工作。据我所知,Windows 无法识别#!/bin/sh和head 部分,并且没有 sh 命令。#!/usr/bin/env node至少在 webstorm 终端中不是这样。Git bash 有 sh 命令,但我想从 webstorm 终端运行这些 npm 脚本。

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

tko*_*one 5

npm在执行使用(包括两个“神奇”快捷方式和)运行的命令之前,会自动将路径添加./node_modules/.bin到您的环境中PATHnpm runnpm startnpm test

npm 脚本文档

你可以这样设置:

"scripts": {
   "test": "karma start",
   "node-test": "jasmine",
   "build": "gulp build"
}
Run Code Online (Sandbox Code Playgroud)

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

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

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