2012-04-14 41 views
9

假设我有像Bootstrap这样的外部依赖。我想从那里导入一些LESS,因为这样我可以在我的代码中使用Bootstrap mixins。由于Meteor已经编译并连接了我的树中的所有LESS(正确?),只需复制LESS目录,然后在一段时间内手动更新它,但这不是一个解决方案。实际上,对于默认的LESS目录,似乎每个LESS源文件都会出现在输出中两次:一次是因为它是在bootstrap.less中导入的,一次是因为文件本身。流星中的外部依赖(如bootstrap)

有没有办法让流星忽略一些路径? public/听起来很接近;但我真的不想为bootstrap回购服务。

另外,这可能会解决它的LESS,但什么是在引导中处理JS扩展的适当方式?

回答

3

我已经想出了一个潜在的解决方案。流星希望一切都捆绑在其目录...所以,让我们把它的范围:)

用下面的目录结构之外的依赖关系:

. 
|-- 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. 
+1

FWIW我刚刚结束了黑客变通这样的:'猫PATH_TO_BOOTSTRAP /更少/ * | grep -v import | egrep -v \^//> bootstrap-concat.less'。作为罪恶丑陋,但作品的魅力,并让我导入一切:) – lvh 2012-04-14 15:29:59

+1

最新的流星包括一个boostrap包,不知道如果这可以解决你的问题,但可能如果你做流星更新,然后流星添加boostrap你现在应该有在您的应用上推送twitter。 – climboid 2012-04-29 20:55:12

+0

使用LESS的优势很容易定制 - 您知道Meteor bootstrap包是否可以从LESS动态编译? – 2012-10-25 00:05:35

0

从我的经验,这是一个坏主意,直接包含在流星项目的引导LESS文件:

  • 它会使开发环境变慢,因为许多额外的文件需要由Meteor转换并由您的浏览器提取。
  • 它不满足明确依赖于核心引导程序包的第三方程序包的依赖性。如果您添加其中一个,您的项目中最终会包含两个引导程序。
  • 软件包资源比项目文件早加载。如果你有一个扩展bootstrap的外部包,它的样式将在引导之前加载。
  • 必须将所有导入重命名为.lessimport才能跟上较新的引导版本。
  • 流星(按字母顺序)加载引导JavaScript文件的顺序不正确,导致Javascript错误只能通过重命名文件来解决。

我创建了一个shell脚本,用于根据预编译的发行版或自己的Bootstrap Git存储库克隆生成定制引导程序Meteor包。

你可以在这里找到它,与使用信息一起: https://github.com/wojas/meteor-package-bootstrap