【问题标题】:Include specific file with sprockets包含带有链轮的特定文件
【发布时间】:2014-12-21 17:00:43
【问题描述】:

我已经通过 bower 安装了 jasmine:

├── angular#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
├─┬ angular-animate#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8 (latest is 1.3.9-build.3719+sha.a3c3bf3)
├─┬ angular-cookies#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ angular-resource#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ angular-route#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ bootstrap#3.3.1
│ └── jquery#2.1.3
├── jasmine#2.1.3
└── require#a45d433fdc

但是,如何将它包含在我的项目中?

根据their homepage我需要包括:

jasmine.js
jasmine-html.js
boot.js

但是,当我尝试在我的专用规范页面上将jasmine.js 与链轮包含在一起时,我收到了一个错误:

//= require jasmine

给我:

Sprockets::FileNotFound
couldn't find file 'jasmine'

bootstrap、angular 和 angular 的模块都可以与 sprockets 完美配合:

//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-resource
//= require angular-route
//= require angular-cookies
//= require bootstrap

但不是茉莉花:(

我不想使用 gem,因为我希望 bower 负责我所有的客户端库。

有没有办法可以用链轮对路径进行硬编码?我可以看到我需要的文件。它们位于:

vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine.js
vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine-html.js
vendor/assets/bower_components/jasmine/lib/jasmine-core/boot.js

【问题讨论】:

    标签: ruby-on-rails jasmine bower sprockets


    【解决方案1】:

    bootstrap、angular、angular 模块和 jasmine 之间的区别在于它们都有一个 bower.jsonjasmine 缺少它。 Bower 将能够在没有 bower.json 文件的情况下解析包,但它有一些缺点。
    article 很好地描述了 sprockets 与 Bower 组件一起工作的方式。简短的版本是,在处理像 //= require bootstrap sprockets 这样的指令时:

    • Sprocket 将在资产路径中搜索 bootstrap
    • 如果找到,它会检查它是文件还是目录。在铁轨上 app, bower 在目录 bootstrap 下安装了这个库。
    • 如果是目录,则检查目录是否包含 bower.json 文件。在 rails 应用,bootstrap 文件夹确实有 bower.json 文件。
    • 它解码 json 文件,并解析包含文件的主要字段和 返回所需的资产。

    现在,jasmine 没有 bower.json 文件。它不会阻止 Bower 解决它,但这意味着 sprockets 将不会找到主文件。
    一种解决方案是提供 require directive logical 或您想要包含的 jasmine 文件的相对路径,例如:

    //= require jasmine/lib/jasmine-core/jasmine.js
    

    这是假设vendor/assets/bower_components 是链轮load path 的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2018-10-05
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 2013-10-15
      • 2013-06-08
      相关资源
      最近更新 更多