2014-01-26 2 views
1

나는 RequireJS 및 Bower 패키지 관리 시스템을 사용하는 방법을 배우기 시작했습니다. 나는이 같은 bower.json 파일을 정의 :배포에서 불필요한 파일 제외

{ 

    "name": "App", 
    "version": "1.0", 
    "dependencies": { 

     "jquery": null, 
     "backbone-amd": null, 
     "underscore-amd": null, 
     "requirejs": null, 
     "handlebars": null, 
     "mustache" : null 

    } 

} 

그것은 라이브러리를 다운로드뿐만 아니라 backbone-amd, underscore-amdrequirejs에 대한 예제 파일 및 문서를 다운로드합니다. 내 프로젝트의 크기는 52 MB입니다 (그리고 r.js, 42 MB로 빌드 한 후). 불필요한 파일을 제외하고 프로젝트의 크기를 줄이는 방법이 있습니까 (수동으로 제거하고 삭제하는 것 제외)?

+0

불분명 함. 1) 이것이 git 문제 (현재 승인 된 답변에 의해 입증 된 바와 같이)인데 왜 git가 아무 곳에도 언급되어 있지 않은 것입니까? 2) 현재 프레임 된 (''r.js'' 결과물의 크기에 대한 우려) 문제는 브라우저에 전달되는 것과 같은 문제로 들릴 수 있습니다. – Louis

+0

미안 해요,이게 해결책 이군요, 문제는 제가 localy가 모든 파일을 다운로드하고 워드 프로세서와 예제를 다운로드 할 때 설치하는 것입니다. 빌드 후에도 파일이 존재하고 프로젝트 크기가 커집니다. 예를 들어 라이브러리 만 다운로드 할 수있는 방법이 있습니까? 예제와 문서가없는 requirejs.js. 내 영어가 그리 좋지 않다. ( – Sysrq147

답변

3

Grunt 또는 make과 같은 빌드 도구를 사용하면 수작업으로 반복해서 작업하지 않아도됩니다. 여기 내가하는 일이있다. 내 프로젝트는 종종 다음과 같이 구성되어 있습니다 :

  • lib/ 프로젝트의 자신의 코드를 포함합니다.

  • build/ 프로젝트를 빌드 한 결과입니다. 즉, 서버에 설치해야하는 코드입니다.

은 그 때 나는 그런트를 사용하여 빌드 설정을 가지고 또는 그 build/ 아래에있는 파일을 만들 정자, NPM 또는 다른 수단을 통해 다운로드 lib/ 플러스 공급 업체 패키지의 코드를 사용합니다.

빌드는 일반적으로 공급 업체의 패키지를 처리하려면 다음 방법 중 하나를 사용

: 패키지 (예 및 문서 등) 불필요한 파일을 포함하지 않는 경우 단지 build/에 적절한 위치에 복사

  1. .

    이 방법이 바람직합니다. 이 방법을 사용할 수 있는지 여부를 확인하려면 공급 업체에서 소프트웨어를 어떻게 포장했는지 확인해야합니다. 일부 라이브러리는 여러 패키지로 배포됩니다. 예를 들어 Lodash에는 npm을 통해 사용 가능한 170 개의 패키지가 있습니다. 따라서 여러 패키지를 사용할 수있는 라이브러리의 경우 불필요한 정보가없는 라이브러리가 있는지 확인해야합니다. 이 경우이 방법을 사용할 수 있습니다.

  2. 패키지에 불필요한 파일이 포함되어있는 경우 빌드 프로세스가 좀 더 지능적이어야하며 파일 만 필요합니다. 파일은입니다.

    조만간 사용하려는 일부 소프트웨어가 원하지 않는 파일과 함께 배포되는 상황에 처하게됩니다. 이 보장 보장됩니다.

    이 경우 개발자와 의사 소통을하고 배포에 필요한 파일 만 포함되도록 소프트웨어를 패키지 할 수 있다면 얼마나 좋을지를 지적 할 수 있습니다. 그들이 필요한 파일 만 포함하는 소프트웨어 패키지를 추가하는 것을 수락하면 위의 첫 번째 방법을 사용할 수 있습니다.

    그렇지 않으면 소프트웨어 구성 방법을 배우고, 절대적으로 필요한 것을 결정하고, 필요한 파일 만 복사하는 빌드 프로세스 (Grunt, make 등)를위한 함수를 작성해야합니다.

3

일반적인 워크 플로는 bower verdor 디렉터리를 .gitignore에 넣은 다음 코드를 서버에 배포 한 후 다시 bower를 실행하는 것입니다. 그리고 그것이 모든 의존성 관리 라이브러리의 목적입니다.

+0

그래, 지금까지 최고의 대답 : D – richardhell