【问题标题】:Executing npm tasks from root dir when package.json is in other location当 package.json 位于其他位置时,从根目录执行 npm 任务
【发布时间】:2019-09-25 12:18:19
【问题描述】:

我知道这不是一个好主意,但我有一个案例,我有以下目录结构并且我无法更改该结构:

[projectRootDir]
    [src]
    [tests]
    [otherDirs]
    [configuration]
        package.json
        mocha.opts
        other files...

有没有办法在没有 cd .. 的情况下执行 npm 命令到 [configuration] 目录?

在 package.json 中,测试文件等的模式配置为以下模式:

test/**/*Test*.spec

所以我需要让 package.json 知道根目录在 [projectRootDir] 中。

node_modules 应该在 [configuration] 中,但如果没有这个可以完成上一步(可以创建符号链接),这不是强制性的情况

【问题讨论】:

  • 请问为什么不能将您的package.json 放在您的包根目录中?这是使用npm 的惯用方式,并且(如果这是一个Nodejs 应用程序)允许您的后端源代码到npm install 下载的require() 模块而不使用路径。
  • 当然。在根目录中,我有无法替换的 package.json。这个来自根目录的 package.json 包含整个配置以及项目依赖项、项目任务等。在配置目录中的 package.json 中,我们只负责一项任务,即运行测试。我知道这听起来很奇怪,但事实就是这样
  • 如果您真的想要您所追求的行为,请考虑合并两个 package.jsonnpm 提供的功能(将 PATH 设置为包含 node_modules/.bin 并将工作目录设置为 package.json 路径的目录名,假设 package.json 位于项目的根目录中)。如果它不存在,您需要像以前一样解决此问题。

标签: javascript angularjs npm package.json


【解决方案1】:

你可以这样写一个脚本:

"test": "cd .. && mkdir testFolder"

【讨论】:

    【解决方案2】:

    使用lerna,您可以创建可以从根目录运行的包 lerna run command 将在包文件夹内的每个项目中运行

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 2017-03-02
      • 1970-01-01
      • 2019-01-23
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2015-10-18
      相关资源
      最近更新 更多