Css 使用更少的资源构建引导以更改@icon字体路径
我将boostrap与Css 使用更少的资源构建引导以更改@icon字体路径,css,twitter-bootstrap,gulp,bower,Css,Twitter Bootstrap,Gulp,Bower,我将boostrap与bower和gulp一起使用 第一次,我把bootstrap.css从bower_组件复制到我网站的dist文件夹,一切看起来都正常 我曾经观察到我没有字形图标。这是因为字体,我保存在一个相对的文件夹中,而不是在bootstrap.css 我注意到引导目录中有less文件夹,其中包含变量。less文件: //** Load fonts from this directory. @icon-font-path: "../fonts/"; 好的,也许如果我在
bower
和gulp
一起使用
第一次,我把bootstrap.css
从bower_组件
复制到我网站的dist
文件夹,一切看起来都正常
我曾经观察到我没有字形图标
。这是因为字体,我保存在一个相对的文件夹中,而不是在bootstrap.css
我注意到引导目录中有less
文件夹,其中包含变量。less
文件:
//** Load fonts from this directory.
@icon-font-path: "../fonts/";
好的,也许如果我在变量.less
中更改相对路径,将引导.less
作为css输出到我的dist
文件夹中,它可能会工作,但是如果我更新引导,那么我将失去所有修改
bower_components
-- bootstrap
---- less
------ bootstrap.less
------ variables.less // @icon-font-path = "../fonts/"
------ ...
---- fonts
------ glyphicons.ttf // etc
dist
-- css
---- bootstrap
------ bootstrap.css // here I need @icon-font-path = "../../fonts/bootstrap/"
-- fonts
---- bootstrap
------ glyphicons.ttf // etc
有没有办法用gulp自定义文件覆盖该值
限制
- 我不想更改
文件夹中的任何文件,因为它们将在下一次bower restore操作中被替换。因此,我无法直接修改bower文件夹中的bower\u components
或bootstrap.less
文件变量.less
- 由于文件夹结构由多个模块使用,我无法更改字体位置以使其适应现有CSS引导文件,因此我的问题是通过less和gulp来适应CSS,而不是移动字体以对应现有CSS
图标字体路径
变量。从dist
中的样式表中引用bower\u组件中的glyph图标不是处理此问题的方法
事实上,应用程序所依赖的本地资源应该部署到dist
,其中包括glyphicons
您可以执行一个“吞咽”任务,以便将资源复制到dist
。以下是一个例子:
gulp.task('copy:resources', function () {
var glyphiconsGlob = 'bower_components/bootstrap/fonts/*.*';
return gulp.src(glyphiconsGlob).pipe(gulp.dest(conf.paths.dist + 'css/fonts/'));
});
您可能需要根据文件bootstrap.css
在dist
文件夹中的位置调整gulp.dest
中的路径。最后,我可以通过执行以下操作来覆盖该变量:
/bower_components
--/bootstrap
----/less
------/boostrap.less
------/variables.less
----/fonts
------/glyp..etc..ttf
/dev
--/bootstrap
----/main.less
----/myVariables.less
/dist
--/bootstrap
----/bootstrap[.min].css
--/fonts
----/bootstrap
------/glyp..etc...ttf
myVariables.less的内容:
//** Load Bootsrap fonts from this directory.
@icon-font-path: "../../fonts/bootstrap/";
main.less
的内容如下:
@import '../../../bower_components/bootstrap/less/bootstrap.less';
// override boostrap variables
@import 'variables.less';
覆盖魔法持续的事实是,在编译文件时,最新的声明/属性将赢得其他声明/属性
因此,gulp
处理的引导源如下:
css: devFolder + '/bootstrap/main.less' // compile/minimize to css
fonts: bowerFolder + '/bootstrap/dist/fonts/*.*' // copy to dist
js: bowerFolder + '/bootstrap/dist/js/bootstrap.js' // minimize to dist
文章内容如下:
您可以创建自己的变量文件以覆盖默认变量。我的结构和你的有点不同,所以我不知道如何提供建议。它会像这样,创建一个带有自定义变量的mysite.variables.less
文件。然后将@import“path/to/mysite.variables.less”
添加到bootstrap.less
或创建一个/css/styles.less
文件,该文件具有@import”路径/to/vendor/bootstrap.less”
和@import“path/to/mysite.variables.less
,您必须将gulp指向它。@hungerstar,谢谢您的建议。我在下面的回答中给出了更多的细节!我在问题描述中没有看到dist
文件夹的结构。站点
文件夹是您的dist文件夹吗?是的,站点是dist文件夹。。。我会解决这个问题。对我来说,问题是告诉CSS它应该在哪里搜索字体,而不是将字体移动到CSS中预期的位置……我的观点是,你以错误的方式看待问题,并且dist
文件夹应该是自治的:如果我打包并交付给某人,该人应该能够使用我的应用程序。但不管怎样,你有权不接受答案,我同意:)哦,迈克尔,谢谢你的帮助,非常感谢你的帮助。。。但我知道如何将文件从一个目录移动到另一个目录。。。对于我来说,根据我的需要调整@icon font path
变量更为复杂,这就是为什么我要求来自SO的专家。。。