我正在使用grunt来构建我的资产,我的Gruntfile.js
配置内容如下:
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在public/scripts/mod.js
中构建模块.tmp/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.] }
答案 0 :(得分:1)
这似乎是problem caused by an r.js commit本身,因此设置构建路径和源路径会导致引发异常。您可以尝试使用早期版本的r.js来解决问题。
答案 1 :(得分:1)
我实际上遇到了同样的问题,前一篇文章的作者是对的:这是一个与在构建过程中覆盖源文件有关的r.js问题。
正如我所见,他们添加了一个配置选项allowSourceOverwrites
来修复它:
r.js config example
将它设置为true
帮助了我,希望能帮助其他人。
答案 2 :(得分:-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
}
}
},
这应该有效。我希望,我理解你的配置。如果没有 - 请告诉我。