假设我有像Bootstrap这样的外部依赖。我想从那里导入一些LESS,因为这样我可以在我的代码中使用Bootstrap mixins。
由于Meteor已经在我的树中编译和连接所有LESS(对吗?),只需复制LESS目录然后手动更新它一次不是解决方案。实际上,使用默认的LESS目录,似乎每个LESS源文件将在输出中出现两次:一次因为它是bootstrap.less
导入的,因为文件本身一次。
有没有办法让meteor忽略一些路径? public/
听起来很近;但我真的不想服务于bootstrap repo。
另外,这可能会为LESS修复它,但是在bootstrap中处理JS扩展的适当方法是什么?
答案 0 :(得分:3)
我找到了一个潜在的解决方案。 Meteor希望将所有内容捆绑在其目录中...所以让我们将依赖项放在其可用范围之外:)
使用以下目录结构:
.
|-- ext
| `-- bootstrap
`-- myapp
|-- .meteor
`-- ...
在我的LESS文件中,我执行以下操作:
@BOOTSTRAP: "../../ext/bootstrap/less";
@import "@{BOOTSTRAP}/reset.less";
这仍然不起作用,但我认为这可归因于a 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.
答案 1 :(得分:0)
根据我的经验,直接在Meteor项目中包含Bootstrap LESS文件是个坏主意:
.lessimport
结尾,这使得很难跟上较新的bootstrap版本。我创建了一个shell脚本,用于从预编译的发行版或您自己的Bootstrap Git存储库的克隆生成自定义引导程序Meteor包。
您可以在此处找到它以及使用信息: https://github.com/wojas/meteor-package-bootstrap