2012-04-14 3 views
9

내가 부트 스트랩과 같은 외부 의존성을 가지고 있다고 가정 해 봅시다. 그곳에서 약간의 LESS를 가져오고 싶습니다. 그런 식으로 제가 코드에서 Bootstrap mixins를 사용할 수 있기 때문입니다.유성의 외부 의존성 (부트 스트랩과 같은)

Meteor가 이미 내 나무에서 모든 LESS를 컴파일하고 연결 했으므로 (LESS 디렉토리를 복사 한 다음 수동으로 한 번만 업데이트하는 것은 해결책이 아닙니다. 실제로 기본 LESS 디렉토리에서 모든 LESS 소스 파일이 출력에 두 번 나타납니다. 한 번 파일을 가져 와서 bootstrap.less으로 가져 왔기 때문입니다.

일부 경로를 무시하도록 유성을 얻을 수있는 방법이 있습니까? public/ 소리가 들림; 하지만 부트 스트랩 저장소를 제공하고 싶지는 않습니다.

게다가 LESS로 수정 될 수도 있지만 부트 스트랩에서 JS 확장을 처리하는 적절한 방법은 무엇입니까?

답변

3

나는 잠재적 인 해결책을 알아 냈습니다. 나는 다음을 수행 내 LESS 파일에서

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

: 유성은 디렉토리에있는 모든 번들 ... 그래서 외부의 범위 : 다음 디렉토리 구조와

의 종속성을 만들어 보자 싶어

@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 \^//> 부트 스트랩 - concat.less'.추악한 죄를 짓고 있지만, 매력을 작동하고 모든 것을 가져올 수 있습니다 :) – lvh

+1

최신 유성에 대한 패키지가 포함되어 있습니다 당신의 문제를 해결할 수 있지만 잠재적으로 당신이 유성 업데이 트를 누른 다음 유성을 추가하면 지금 가지고 있어야합니다 귀하의 애플 리케이션에 트위터 부스트. – climboid

+0

LESS를 사용하면 손쉽게 사용자 정의 할 수 있다는 이점이 있습니다. Meteor 부트 스트랩 패키지가 LESS에서 동적으로 컴파일되는지 알고 있습니까? –

0

, 그것은 나쁜 생각에 직접 유성 프로젝트의 부트 스트랩 LESS 파일을 포함한다 :

  • 그것을 Meteor로 변환하고 브라우저에서 가져올 필요가있는 많은 추가 파일이 있기 때문에 개발 환경이 훨씬 느려질 것입니다.
  • 코어 부트 스트랩 패키지에 명시 적으로 의존하는 타사 패키지의 종속성을 충족시키지 못합니다. 그 중 하나를 추가하면 프로젝트에 두 개의 부트 스트랩이 생깁니다.
  • 패키지 리소스가 프로젝트 파일보다 먼저로드됩니다. 부트 스트랩을 확장하는 외부 패키지가 있다면 부트 스트랩 전에 스타일이로드됩니다.
  • 모든 가져 오기의 이름을 .lessimport으로 변경하면 최신 부트 스트랩 릴리스를 따라 잡기가 어려워집니다.
  • Meteor (알파벳 순서)에 의해 부트 스트랩 javascript 파일이로드되는 순서가 잘못되어 파일의 이름을 바꾸면 해결 될 수있는 Javascript 오류가 발생합니다.

미리 컴파일 된 배포판이나 Bootstrap Git 저장소의 복제본에서 사용자 정의 부트 스트랩 Meteor 패키지를 생성하기 위해 쉘 스크립트를 만들었습니다.

당신은 사용 정보와 함께, 여기를 찾을 수 있습니다 https://github.com/wojas/meteor-package-bootstrap

관련 문제