使用本地deps运行npm脚本

时间:2015-10-21 23:20:28

标签: node.js windows npm webstorm travis-ci

目前我使用本地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"
  },

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

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

编辑:

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

我有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)我假设。但这只是猜测。我不确定是否可以这样做。

1 个答案:

答案 0 :(得分:1)

npm会在使用./node_modules/.bin(包括两个" magic"快捷键{{1}执行命令之前自动将路径PATH添加到npm run env前面}和npm start

npm scripts docs

您可以使用以下方式进行设置:

npm test

假设您在"scripts": { "test": "karma start", "node-test": "jasmine", "build": "gulp build" } devDependencies中列出了karma,jasmine和gulp-cli(以便他们在执行dependencies时重新安装)

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

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