目前我使用本地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)
我假设。但这只是猜测。我不确定是否可以这样做。
答案 0 :(得分:1)
npm会在使用./node_modules/.bin
(包括两个" magic"快捷键{{1}执行命令之前自动将路径PATH
添加到npm run
env前面}和npm start
)
您可以使用以下方式进行设置:
npm test
假设您在"scripts": {
"test": "karma start",
"node-test": "jasmine",
"build": "gulp build"
}
或devDependencies
中列出了karma,jasmine和gulp-cli(以便他们在执行dependencies
时重新安装)
是的,它与travis兼容。以下是使用npm install
在travis上测试的软件包示例,该软件包作为模块在本地安装: