9

假设我有一个像 Bootstrap 这样的外部依赖项。我想从那里导入一些 LESS,因为这样我可以在我的代码中使用 Bootstrap mixins。

由于 Meteor 已经在编译和连接我的树中的所有 LESS(对吗?),因此仅复制 LESS 目录然后不时手动更新它不是解决方案。事实上,使用默认的 LESS 目录,似乎每个 LESS 源文件都会在输出中出现两次:一次是因为它是在 中导入的bootstrap.less,一次是因为文件本身。

有没有办法让流星忽略某些路径?public/听起来很近;但我真的不想提供引导程序回购。

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

4

2 回答 2

3

我想出了一个潜在的解决方案。Meteor 想要将所有东西都捆绑在它的目录中......所以让我们把依赖关系放在它的范围之外:)

具有以下目录结构:

.
|-- ext
|   `-- bootstrap
`-- myapp
    |-- .meteor
    `-- ...

在我的 LESS 文件中,我执行以下操作:

@BOOTSTRAP: "../../ext/bootstrap/less";
@import "@{BOOTSTRAP}/reset.less";

这仍然不起作用,但我认为这归因于LESS bug

不幸的是,Meteor 产生的错误信息在这里完全没用:

[[[[[ ~/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.
于 2012-04-14T10:12:27.640 回答
0

根据我的经验,直接在 Meteor 项目中包含 Bootstrap LESS 文件是个坏主意:

  • 它会使你的开发环境变慢很多,因为许多额外的文件需要由 Meteor 转换并由你的浏览器获取。
  • 它不满足显式依赖核心引导包的第三方包的依赖关系。如果您添加其中之一,您最终将在项目中获得两个引导程序。
  • 包的资源比项目文件更早加载。如果你有一个扩展 bootstrap 的外部包,它的样式将在 bootstrap 之前加载。
  • 必须重命名所有导入以结束,.lessimport这使得很难跟上更新的引导程序版本。
  • Meteor 加载引导 javascript 文件的顺序(按字母顺序)不正确,导致 Javascript 错误只能通过重命名文件来修复。

我创建了一个 shell 脚本来从预编译的发行版或您自己的 Bootstrap Git 存储库的克隆生成自定义引导 Meteor 包。

您可以在这里找到它以及使用信息: https ://github.com/wojas/meteor-package-bootstrap

于 2013-07-18T09:43:27.270 回答