我正在使用 express 生成器 https://github.com/expressjs/generator并混合 Angular 种子项目https://github.com/angular/angular-seed为平均堆栈应用程序创建一个轻量级脚手架。
我希望能够运行 npm start
来安装所有依赖项,包括前端依赖项。问题在于,与 Angular/前端相关的文件不在根目录中,而是在“public”子目录中。 我知道我可以创建一个运行 bower install
的 npm start
脚本,但我不知道如何使启动脚本下降到公共(public)子目录中,然后运行 bower install
。
我的问题是 bower install
是否尝试在子目录中查找 Bower.json 文件,还是在工作目录中查找 Bower.json 文件后停止搜索?如果是前者,那么我可以直接运行 bower install
而不必担心手动导航文件夹结构。
如果 bower install
不会在子目录中搜索 Bower.json,我如何将此命令包含在 npm start
脚本中?看来该命令必须将目录更改为“public”子目录,然后运行bower install
。
最后,这对我来说主要是一个部署问题。我正在使用 heroku,它在部署时会在检测到 package.json 文件存在时自动运行 npm install
和启动脚本。所以看来我需要包含 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 依赖项,然后启动您的 Node 应用程序。
希望这有帮助!
关于angularjs - Bower install 是否需要在与 Bower.json 相同的文件夹中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249128/