我使用的是jquery ui,自编译:不是通过bower,而是直接从jquery ui网站生成和下载的。我已将其放入myapp/vendor/bundles/jquery-ui-1.11.2.custom
在我的Brocfile
中,我正在加载CSS和JS资源:
app.import('vendor/bundles/jquery-ui-1.11.2.custom/jquery-ui.css');
app.import('vendor/bundles/jquery-ui-1.11.2.custom/jquery-ui.theme.css');
app.import('vendor/bundles/jquery-ui-1.11.2.custom/jquery-ui.js');
然后,CSS被包括在vendor.css
资源中,js被包括在vendor.js
资源中。
但这并没有提供完整的jqueryui组件。特别是,文件jquery-ui.css
使用以下规则:
.ui-widget-content {
border: 1px solid #72b42d;
background: #285c00 url("images/ui-bg_inset-soft_10_285c00_1x100.png") 50% bottom repeat-x;
color: #ffffff;
}
它正在对vendor/bundles/jquery-ui-1.11.2.custom/images/ui-bg_inset-soft_10_285c00_1x100.png
中的图像进行寻址。该文件在dist
文件夹中不可用。
url("images/...")
是相对于CSS本身的路径的。这是jquery-ui
组件的结构:
vendor/bundles/jquery-ui-1.11.2.custom/
├── external
│ └── jquery
│ └── jquery.js
├── images
│ ├── ui-bg_diagonals-small_0_aaaaaa_40x40.png
│ ├── ui-bg_diagonals-thick_15_444444_40x40.png
│ ├── ui-bg_diagonals-thick_95_ffdc2e_40x40.png
│ ├── ui-bg_glass_55_fbf5d0_1x400.png
│ ├── ui-bg_highlight-hard_30_285c00_1x100.png
│ ├── ui-bg_highlight-soft_33_3a8104_1x100.png
│ ├── ui-bg_highlight-soft_50_4eb305_1x100.png
│ ├── ui-bg_highlight-soft_60_4ca20b_1x100.png
│ ├── ui-bg_inset-soft_10_285c00_1x100.png
│ ├── ui-icons_4eb305_256x240.png
│ ├── ui-icons_72b42d_256x240.png
│ ├── ui-icons_cd0a0a_256x240.png
│ └── ui-icons_ffffff_256x240.png
├── index.html
├── jquery-ui.css
├── jquery-ui.js
├── jquery-ui.min.css
├── jquery-ui.min.js
├── jquery-ui.structure.css
├── jquery-ui.structure.min.css
├── jquery-ui.theme.css
└── jquery-ui.theme.min.css
我想为我的申请提供的是:
- jquery-ui.css
- jquery-ui.js
- jquery-ui.theme.css
- 图像/目录
如何在西兰花中解决这个问题?
我已经解决了(黑客入侵?)我的问题,所以我会在这里为其他人发布一个参考。如果有人能对所选的解决方案发表评论,我非常乐意收到评论:
我使用了与这里描述的类似的方法
首先,安装一些花椰菜工具:
npm install --save-dev broccoli-static-compiler
npm install --save-dev broccoli-merge-trees
现在修改您的Brocfile.js
:
var mergeTrees = require('broccoli-merge-trees');
var pickFiles = require('broccoli-static-compiler');
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
...
// We provide bundles tree as-is
var bundlesTree = pickFiles('vendor/bundles', {
srcDir: '/',
files: ['*'],
destDir: '/assets/bundles',
});
module.exports = mergeTrees([app.toTree(), bundlesTree]);
(不再app.import
捆绑包)
现在捆绑包在dist/assets/bundles
上可用,因此您可以手动在index.html
中加载CSS和JS:
<link rel="stylesheet" href="assets/bundles/jquery-ui-1.11.2.custom/jquery-ui.css">
<link rel="stylesheet" href="assets/bundles/jquery-ui-1.11.2.custom/jquery-ui.theme.css">
...
<script src="assets/bundles/jquery-ui-1.11.2.custom/jquery-ui.js"></script>
由于CSS是直接从html
加载的,因此对图像的相对引用运行良好,并在assets/bundles/jquery-ui-1.11.2.custom/images/...
中获取正确的文件。
这很有效,但有点麻烦:它需要手动导入html
文件上的资产。
有人知道只有Brocfile
的替代方案吗?西兰花真的可以重新分配导入,以便相对引用透明地工作吗?怎样