2014-01-17 61 views
2

我使用咕嚕建立我的資產的來源路徑,我Gruntfile.js配置如下:RequireJS:模塊「X」具有相同的輸出路徑

requirejs: { 
    build: { 
    options: { 
     almond: true, 
     appDir: '.tmp', 
     findNestedDependencies: true, 
     mainConfigFile: '.tmp/scripts/config.js', 
     modules: [ 
     { name: 'mod' }, 
     ], 
     dir: 'public', 
     optimize: 'uglify', 
     optimizeCss: 'standard', 
     preserveLicenseComments: false, 
     relativeUrl: './', 
     skipDirOptimize: true, 
     useStrict: true 
    } 
    } 
}, 

所以技術上的配置告訴RequireJS在.tmp/scripts/mod.js之外的public/scripts/mod.js內部構建模塊。

爲什麼RequireJS堅持路徑與輸出相同?

Running "requirejs:build" (requirejs) task 
{ [Error: Error: Module ID 'mod' has a source path that is same as output path: /Users/ivan/project/.tmp/scripts/mod.js. Stopping, config is malformed. 
    at /Users/ivan/project/node_modules/requirejs/bin/r.js:25834:39 
] 
    originalError: [Error: Module ID 'mod' has a source path that is same as output path: /Users/ivan/project/.tmp/scripts/mod.js. Stopping, config is malformed.] } 

回答

-1

看來,你有單個模塊來優化 - 你不應該使用模塊。試試這個:

requirejs: { 
    build: { 
    options: { 
     almond: true, 
     findNestedDependencies: true, 
     mainConfigFile: '.tmp/scripts/config.js', 
     name : 'mod' 
     out: 'public/result.js', 
     optimize: 'uglify', 
     optimizeCss: 'standard', 
     preserveLicenseComments: false, 
     relativeUrl: './', 
     skipDirOptimize: true, 
     useStrict: true 
    } 
    } 
}, 

這應該有效。我希望我能很好地理解你的配置。如果沒有 - 讓我知道。

+0

嗯,我實際上是在創建多個模塊。我只是將它們從配置中移除以簡化上述示例。 –

+0

我嘗試了你建議的方式,它的工作原理。但只能建立一個模塊。我猜可以有多個配置,我的配置中每個模塊使用一個併發配置。謝謝! –

+2

@IvanTorres我認爲,你的例子中的主要問題是在'''appDir'''字段。也許你可能不指定它 - 你無論如何指定mainConfigFile。 –

1

我實際上面臨同樣的問題,而且上一篇文章的作者是正確的:這是一個與在構建過程中覆蓋源文件相關的r.js問題。

依我之見,他們增加了一個配置選項allowSourceOverwrites解決它: r.js config example

將其設置爲true幫助我,也希望能幫助別人。

相關問題