【问题标题】:Bower downloads entire jQueryBower 下载整个 jQuery
【发布时间】:2014-05-18 01:04:48
【问题描述】:

我有 Bower 1.3.1 版。

我定义了以下依赖项:

"dependencies": {
"angular" : "1.2.13",
"angular-cookies" : "1.2.13",
"angular-resource" : "1.2.13",
"angular-route" : "1.2.13",
"bootstrap" : "3.1.1",
"jqplot" : "b882a2044fe03e4009f49b990155a8e1686a2d67",
"jquery" : "2.0.0",
"requirejs" : "2.1.11",
"requirejs-text" : "2.0.10",
"spin.js" : "1.3.3"
}

之后:

凉亭安装。我得到了 jQuery 的整个项目:

drwxr-xr-x  6 root root   4096 Apr  5 13:41 .
drwxr-xr-x 12 root root   4096 Apr  5 13:41 ..
-rw-rw-r--  1 root root   6353 Apr 18  2013 AUTHORS.txt
-rw-r--r--  1 root root    512 Apr  5 13:41 .bower.json
-rwxrwxr-x  1 root root    212 Apr 18  2013 bower.json
drwxrwxr-x  2 root root   4096 Apr  5 13:41 build
-rwxrwxr-x  1 root root    212 Apr 18  2013 component.json
-rwxrwxr-x  1 root root    881 Apr 18  2013 composer.json
-rw-rw-r--  1 root root   8134 Apr 18  2013 CONTRIBUTING.md
-rw-rw-r--  1 root root    595 Apr 18  2013 .editorconfig
-rw-rw-r--  1 root root     26 Apr 18  2013 .gitattributes
-rw-rw-r--  1 root root    178 Apr 18  2013 .gitignore
-rw-rw-r--  1 root root    171 Apr 18  2013 .gitmodules
-rw-rw-r--  1 root root  15021 Apr 18  2013 Gruntfile.js
-rwxrwxr-x  1 root root 240196 Apr 18  2013 jquery.js
-rwxrwxr-x  1 root root  16178 Apr 18  2013 jquery-migrate.js
-rwxrwxr-x  1 root root   7086 Apr 18  2013 jquery-migrate.min.js
-rwxrwxr-x  1 root root  83095 Apr 18  2013 jquery.min.js
-rw-rw-r--  1 root root    242 Apr 18  2013 .jshintrc
-rw-rw-r--  1 root root   4418 Apr 18  2013 .mailmap
-rw-rw-r--  1 root root   1099 Apr 18  2013 MIT-LICENSE.txt
-rw-rw-r--  1 root root    883 Apr 18  2013 package.json
-rw-rw-r--  1 root root  12447 Apr 18  2013 README.md
drwxrwxr-x  2 root root   4096 Apr  5 13:41 speed
drwxrwxr-x  4 root root   4096 Apr  5 13:41 src
drwxrwxr-x  5 root root   4096 Apr  5 13:41 test

我能否以某种方式安装依赖项以仅下载 jquery.min.js?

【问题讨论】:

    标签: javascript jquery dependencies installation bower


    【解决方案1】:

    bower 不能这样工作。您要么安装整个软件包,要么不安装任何软件包。问题是bower 不知道包的哪些部分被使用或未被使用,所以它必须下载整个东西。

    现在,您可以从源代码(wget、下载等)获取您想要的页面,而不必担心其余的问题,但这可能比它的价值更麻烦,因为您必须确保页面不链接到其他页面。您也不能直接从bower 执行此操作,因此您必须自己设置,此时为什么要使用bower

    如果您不关心空间问题,您也可以安装整个包,但只使用其中的一部分(如引用页面,如<link href="/path/to/package/page_in_package" />)。我不相信这会对带宽等产生任何影响,因为整个软件包都在您的服务器上,但是客户端只会请求一个页面(尽管该页面可能会导致客户端请求其他页面,例如 @987654327 @s 在里面)。

    最后,您可以安装整个软件包,然后删除其中的一部分,但您必须知道要删除哪些部分,bower 可能会尝试重新下载这些文件/文件夹。据我通过实验得知,bower 不会尝试重新下载您删除的任何内容,只要该软件包与您的bower.json 中的软件包版本相同,除非您告诉它bower installbower install <any package>。如果你说bower update <whatever>,它甚至不会重新下载它们。如果您的 bower.json 中没有该软件包,bower 将永远不会删除该文件夹中的任何内容,但如果另一个软件包需要此软件包的不同版本,它也无济于事,这就是全部原因对于bower,不是吗?

    【讨论】:

      【解决方案2】:

      这不是关于 bower,而是关于 jQuery 本身。由于 jQuery 没有用于在 bower 上分发的单独存储库,因此您可以获得整个项目。例如,Angular 有 an official one,而 Bootstrap 有 an unofficial one,您只能在其中获取生产就绪文件。

      更新:实际上有 component/jquery 这正是您想要的:jquery 的 shim 项目。它不会出现在$ bower search jquery 命令中,但您可以使用 repo url 进行安装。

      $ bower install https://github.com/components/jquery
      

      然而,这个 repo will probably be deleted soon.

      【讨论】:

        【解决方案3】:

        您可以尝试使用 bower-installer https://github.com/blittle/bower-installer

        它是一个用于安装不包含整个 repos 的 bower 依赖项的工具。它仅提取您配置它使用的目录中的“主要”文件。如果某个库在 bower.json 配置中不包含“主”文件,或者您希望抓取不同的文件,您可以在 bower.json 中配置它。

        我还应该注意,它仍然会在 bower_components 中下载整个 repo,因为它首先使用 bower install 然后将“主”文件移动到目标目录。

        也许,这并没有涵盖您不希望下载除一个特定文件之外的任何其他文件的确切用例,但如果您将它与 gulp 混合并使用它来删除大bower_components/ 在 bower-installer 完成后。

        更多资源: https://scotch.io/tutorials/only-grab-the-files-you-need-while-using-bower http://strangemilk.com/bower-installer/

        【讨论】:

          猜你喜欢
          • 2020-05-02
          • 2016-11-10
          • 2017-06-21
          • 2019-03-12
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          • 1970-01-01
          • 2013-05-02
          相关资源
          最近更新 更多