2015-07-21 25 views
0

我有一個項目,是由包含以下結構中的多個應用程序:咕嚕-的contrib-requirejs與共享庫錯誤:沒有這樣的文件或目錄(更新)

project 
    |-node_modules 
    |-common 
    |-public 
     |-js 
     |-vendor 
      |-almond.js 
      |-require.js 
      |-underscore.js 
      |-backbone.js 
    |-app1 
    |-public 
     |-js 
     |-requireConfig.js 
     |-main.js 
     |-views 
      |- ... 
     |-models 
      |- ... 
    |-app2 
    Gruntfile.js 

我想有我requirejs咕嚕任務將js src編譯爲每個應用程序的一個輸出文件。我有這個爲app2工作,但它不使用共享代碼...呢。 我已經爲我的grunt配置嘗試了一堆不同的東西,但每次都收到不同的錯誤。

這裏是我的gruntfile到目前爲止,對於requirejs:

requirejs: { 
    app1: { 
    options: { 
     baseUrl: './', 
     mainConfigFile: 'app1/public/js/requireConfig.js', 
     include: ['app1/public/js/main'], 
     out: 'app1/public/release/main.js', 
     name: 'common/public/js/vendor/almond', 
     optimize: 'none' 
    } 
    }, 
    app2: {...} 
}, 

這裏是我的requireConfig.js:

require.config({ 
    paths: { 
    jquery: '/common/public/js/vendor/jquery', 
    underscore: '/common/public/js/vendor/underscore', 
    etc 
    } 
}); 

現在,當我試圖運行的任務,我得到一個錯誤:

Error: ENOENT, no such file or directory 
'/common/public/js/vendor/backbone.js' 
In module tree: 
    app1/public/js/main 

不知道如何解決這個問題。我試過在我的requireConfig中設置baseUrl,但沒有真正的運氣。

我發現r.js示例構建文件是有點令人困惑,我猜可能我混淆了gruntfile中的配置。

回答

0

我通過做一些稍微不受歡迎的改變來得到這個工作。我有我的服務器設置,以便/ common/public服務器該文件夾,但這會影響我的requirejs構建。看來,在我的requireConfig路線必須是相對於它位於的目錄,然後我有前綴:

'../../../common/public' 

我不很喜歡,我也不得不改變咕嚕config:

requirejs: { 
    app1: { 
    options: { 
     mainConfigFile: 'app1/public/js/requireConfig.js', 
     include: ['main'], 
     out: 'app1/public/release/main.js', 
     name: '../../../common/public/js/vendor/almond', 
     optimize: 'none' 
    } 
    }, 
    app2: {...} 
}, 
相關問題