【问题标题】:Run npm scripts using local deps使用本地部门运行 npm 脚本
【发布时间】:2015-10-22 14:51:59
【问题描述】:

目前我以这种方式使用本地部门运行 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) 我假设。但这只是一个猜测。我不确定这是否可以做到。

【问题讨论】:

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


    【解决方案1】:

    npm 在执行使用npm run 运行的命令之前,会自动将路径./node_modules/.bin 添加到您的PATH 环境中(包括两个“神奇”快捷方式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/

    【讨论】:

    • karma start 对我开始了全球业力。这导致了错误,因为某些依赖项没有全局安装。这就是我问这个问题的原因......
    • 如果您在本地安装了所有内容,它将使用本地版本,因为路径被添加到开头。 In this gist 我已经在全球和本地安装了水龙头。然后使用which 我问它将从哪里运行水龙头。如果我使用npm test 运行,我会得到本地版本。如果我直接从命令行运行,我会得到全局版本。如果本地版本不存在,它将仅使用全局版本。
    • 我编辑了这个问题。 Windows 上的 webstorm 终端的行为与 git bash 不同的问题。例如。它没有 which 命令。如果我尝试使用项目根目录中的 git bash which karma,我得到了全局副本。你用什么操作系统?
    • 我在 OSX 上。除非通过各种 unix 仿真层(如您拥有的 git bash),否则您将无法轻松地在 Windows 上运行 bash/sh 脚本。 Webstorm 的终端可能是 DOS 提示符或 powershell。不过路径情况应该是一样的。
    • 它不在 Windows 上,至少在我的机器上 webstorm 终端和 git bash 加载全局而不是本地。嗯,我可能会发送一个关于此的错误报告,但在此之前我将从节点 0.12 更新到节点 4。也许他们已经解决了这个问题。
    猜你喜欢
    • 2018-10-10
    • 2016-04-28
    • 2016-08-28
    • 2013-09-16
    • 1970-01-01
    • 2017-05-10
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多