bower 安装是否需要 运行 在与 bower.json 相同的文件夹中?

Does bower install need to be run in the same folder as bower.json?

我正在使用 express 生成器 https://github.com/expressjs/generator and mixing the angular seed project https://github.com/angular/angular-seed 为平均堆栈应用程序创建轻量级脚手架。

我希望能够 运行 npm start 安装所有依赖项,包括前端依赖项。问题是angular/front端相关文件不在根目录下,而是在"public"子目录下。 我知道我可以创建一个 npm start 脚本,其中 运行 是 bower install 但我不知道如何使启动脚本下降到 public 子-目录,然后 运行 bower install

我的问题是 bower install 是否尝试在子目录中查找 bower.json 文件,或者在找到 bower.json 文件后停止搜索working directory? 如果是前者,那么我可以 运行 bower install 而不用担心手动浏览文件夹结构。

如果 bower install 不会在子目录中搜索 bower.json,我如何将此命令包含在 npm start 脚本中?似乎该命令必须将目录更改为 "public" 子目录,然后是 运行 bower install

最后,这对我来说主要是部署问题。我正在使用 heroku,它在部署时会自动 运行s npm install 并在检测到 package.json 文件存在时启动脚本。因此,我似乎需要将 include bower install 作为启动脚本的一部分。

回答您的问题:bower install 必须 运行 来自 bower.json 文件所在的目录。

不过,您绝对可以创建一个 npm start 脚本来执行此操作。这简单! npm 脚本只不过是逐字执行的 shell 命令。

那么,假设您有一个如下所示的项目:

myapp
├── app.js
├── package.json
└── public
    └── bower.json

您基本上可以创建如下所示的 npm start 脚本:

// ...
"start": "cd public && bower install && cd .. && node app.js"
// ...

这将确保当 npm start 为 运行 时,首先安装您的 Bower 依赖项,然后启动您的节点应用程序。

希望对您有所帮助!