RequireJS에서 동일한 구성 파일을 사용하여 병렬 디렉터리에서 모듈 최적화/빌드

StackOverflow https://stackoverflow.com/questions/8982133

  •  12-11-2019
  •  | 
  •  

문제

제목만으로는 설명이 부족할 것 같은 느낌이 듭니다 :)

설정

다음과 같은 구조가 있다고 가정합니다.

enter image description here

어디 app.js 파일은 다음과 같은 애플리케이션의 주요 부트스트래핑/입력 모듈입니다.

app01

require.config({});

require([
    'app/component1.js'
], 
function(component){
    // do something with component1
});

앱02

require.config({});

require([
    'app/component2.js'
], 
function(component){
    // do something with component2
});

둘 다 적절하게 작동합니다. index.html 파일.

RequireJS 빌드 구성 파일이 있습니다(경로와 관련된 올바른 배치를 가정). app01:

({
    appDir: 'apps/app01',
    baseUrl: '.',
    dir: 'built_apps/app01',
    optimize: 'closure',
    paths: {
    },

    modules: [
        {
            name: 'app'
        }
    ]
})

잘 작동합니다.유사한 파일(교체 app01 ~와 함께 app02) 잘 작동합니다 앱02.

문제/대상

이제 두 가지 모두에 대해 RequireJS 빌드 도구(Ant에서 Rhino와 함께 Google Closure 사용, 이 경우에는 그다지 중요하지 않음)를 실행할 수 있기를 원합니다. app01 그리고 앱02 다음을 사용하는 애플리케이션 똑같다 빌드 구성 파일 그리고 바람직하게는 실제로 모든 앱을 이름별로 나열하지 않는 것이 좋습니다(시간에 따라 번호와 이름이 달라질 수 있으므로).

기본적으로 나는 다음과 같은 것을 기대합니다.

({
    appDir: 'apps',
    baseUrl: '.',
    dir: 'built_apps',
    optimize: 'closure',
    paths: {

    },

    modules: [
        {
            name: 'app*/app' // notice the wildcard
        }
    ]
})

뛰어 넘을 것 built_apps 디렉토리에서 app*/app 아래의 모든 앱을 찾아 각각을 최적화하세요.

나는 Ant를 사용하여 앱별로 즉시 이러한 빌드 구성 파일을 생성하고 이에 대해 빌드를 실행한 다음 정리할 수 있다는 것을 알고 있지만 RequireJS 솔루션을 선호합니다.

RequireJS로 이와 같은 작업을 수행할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

requirejs에 대해 내장 된 와일드 카드 구성이 없습니다. 한 가지 방법 또는 다른 방법으로 코드가 필요합니다. 나는 여기에 와일드 카드를 모듈 객체의 어떤 종류의 암시 적 반복으로 변환하는 것, mustache.js 템플릿을 제공합니다. IMO,이 문맥에서 상당히 취성적이고 제한된 접근 방식입니다.

대신 빌드 구성에서 JavaScript에서 프로그래밍 방식으로 modules 배열을 생성하는 것이 좋습니다. Recall, 빌드 구성은 JSON 데이터 구조뿐만 아니라 JavaScript입니다. 이것은 정교한 스크립팅 기능을 제공합니다.

"Nofollow"> RequireJS-Rails Gem . 다음은 "nofollow"> GIST GIST 빌드 타임에서 볼 수있는 것을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top