我有一个包含子模块的父项目。该模块具有自己的bower.json(指定模块依赖项)和.bowerrc(指定应将这些文件下载到哪个文件夹)。这些依赖性在模块HTML中链接。

父项目使用package.json来管理Node依赖项。

为了防止用户同时运行npm install(用于父依赖项)和cd modulebower installcd ../(用于模块依赖项),我在postinstall中添加了package.json脚本:

"scripts": {
    "postinstall" : "./node_modules/.bin/bower install ./module/ --config.directory=\"./module/public/bower_components\""
}

请注意,我可以让Bower将模块的依赖项安装到/module/public/bower_components中的唯一方法是在directory脚本中显式声明postinstall

但是./module/.bowerrc已经包含此信息,因此理想情况下,我想“使” bower install意识到这一点。这也将使package.json更易于维护,并且module更易于移植。

我还尝试使用父级postinstall中的package.json钩子(Hook)将Bower依赖项和postinstall脚本传输到模块的package.json中,以在模块目录中运行npm install。但是这种方法在模块中结束。依赖项将下载到父级的node_modules文件夹中。

有没有更好的方法来解决这个问题?

最佳答案

Bower config使用以下优先级顺序来解析构建的配置。

来自http://bower.io/docs/config/的Bower文档

通过--config 的

  • CLI参数
  • 环境变量
  • 本地.bowerrc位于当前工作目录
  • 所有.bowerrc文件都向上目录树
  • 使用者主目录(〜)中的
  • .bowerrc文件
  • 位于全局文件夹(/)中的
  • .bowerrc文件

  • 在您的情况下,您可以将.bowerrc文件与package.json放在同一文件夹中,但可以使用前缀module/public配置所有属性,以使设置生效。

    我喜欢您从package.json的一个位置管理所有依赖项的想法。

    10-06 04:03