流星中的外部依赖(如bootstrap)
问题描述:
假设我有像Bootstrap这样的外部依赖。我想从那里导入一些LESS,因为这样我可以在我的代码中使用Bootstrap mixins。由于Meteor已经编译并连接了我的树中的所有LESS(正确?),只需复制LESS目录,然后在一段时间内手动更新它,但这不是一个解决方案。实际上,对于默认的LESS目录,似乎每个LESS源文件都会出现在输出中两次:一次是因为它是在bootstrap.less
中导入的,一次是因为文件本身。流星中的外部依赖(如bootstrap)
有没有办法让流星忽略一些路径? public/
听起来很接近;但我真的不想为bootstrap回购服务。
另外,这可能会解决它的LESS,但什么是在引导中处理JS扩展的适当方式?
答
我已经想出了一个潜在的解决方案。流星希望一切都捆绑在其目录...所以,让我们把它的范围:)
用下面的目录结构之外的依赖关系:
.
|-- ext
| `-- bootstrap
`-- myapp
|-- .meteor
`-- ...
在我的LESS文件,我做了以下内容:
@BOOTSTRAP: "../../ext/bootstrap/less";
@import "@{BOOTSTRAP}/reset.less";
这仍然不起作用,但我认为这归因于a LESS bug。
不幸的是由流星所产生的错误信息是完全无用的位置:
[[[[[ ~/Code/igl/igl ]]]]]
Running on: http://localhost:3000/
Errors prevented startup:
Exception while bundling application:
ReferenceError: err is not defined
at /usr/local/meteor/packages/less/package.js:33:62
at [object Object].add_file (/usr/local/meteor/app/lib/bundler.js:193:5)
at /usr/local/meteor/app/lib/bundler.js:97:16
at Array.forEach (native)
at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11)
at /usr/local/meteor/app/lib/bundler.js:96:11
at Array.forEach (native)
at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11)
at Object.add_files (/usr/local/meteor/app/lib/bundler.js:95:9)
at [object Object].on_use (/usr/local/meteor/app/lib/packages.js:136:11)
Your application is crashing. Waiting for file change.
答
从我的经验,这是一个坏主意,直接包含在流星项目的引导LESS文件:
- 它会使开发环境变慢,因为许多额外的文件需要由Meteor转换并由您的浏览器提取。
- 它不满足明确依赖于核心引导程序包的第三方程序包的依赖性。如果您添加其中一个,您的项目中最终会包含两个引导程序。
- 软件包资源比项目文件早加载。如果你有一个扩展bootstrap的外部包,它的样式将在引导之前加载。
- 必须将所有导入重命名为
.lessimport
才能跟上较新的引导版本。 - 流星(按字母顺序)加载引导JavaScript文件的顺序不正确,导致Javascript错误只能通过重命名文件来解决。
我创建了一个shell脚本,用于根据预编译的发行版或自己的Bootstrap Git存储库克隆生成定制引导程序Meteor包。
你可以在这里找到它,与使用信息一起: https://github.com/wojas/meteor-package-bootstrap
FWIW我刚刚结束了黑客变通这样的:'猫PATH_TO_BOOTSTRAP /更少/ * | grep -v import | egrep -v \^//> bootstrap-concat.less'。作为罪恶丑陋,但作品的魅力,并让我导入一切:) – lvh 2012-04-14 15:29:59
最新的流星包括一个boostrap包,不知道如果这可以解决你的问题,但可能如果你做流星更新,然后流星添加boostrap你现在应该有在您的应用上推送twitter。 – climboid 2012-04-29 20:55:12
使用LESS的优势很容易定制 - 您知道Meteor bootstrap包是否可以从LESS动态编译? – 2012-10-25 00:05:35