我有一个多页/多应用程序minifcation我正在努力工作。
结构如下
common/
--main config file that defines the common libs
common/build
--app.build.js (see example below)
application1/
--application
--milion other files
application2/
--application
--thousand other files
这是放在页面的标题中
</style><script data-main='common/main' src='libraries/require.js'></script>
像这样的页脚
<script>require(['../application1/application']);</script>
<script>require(['../application2/application']);</script>
这种方法在使用大量文件时非常有效,并且应用程序可以完美地运行和交互 然而,尝试将它们合二为一,在使其工作方面似乎更具挑战性。我可能只是一个白痴
构建文件
({
baseUrl: "../",
mainConfigFile: '../main.js',
optimize: 'uglify',
optimizeCss: 'standard',
out: "../global.min.js",
//insertRequire: ['main'],
include: ['../application1/application', '../application2/application'],
wrap: true // have tried both options - this makes the scenario at the bottom work
})
这很完美,可以产生一个可爱的global.min.js。挑战是它不执行定义调用的回调我包括它如下:
这是放在页面的标题中
</style><script data-main='common/main' src='libraries/require.js'></script>
像这样的页脚
<script>require(['../common/global.min']);</script>
但是:如果我在这样的地方保留旧的要求:
<script>require(['../application1/application']);</script>
<script>require(['../application2/application']);</script>
下载3个文件
注意:此时它缺少大约150个文件,但应用程序工作正常。
花了一些时间在这上面,我的脑袋现在已经被破坏了,我无法弄清楚如何从一个缩小的文件中使它工作。
任何帮助都非常感激,因为我已经尝试过任何我能想到的东西。很高兴分享所有文件,其中有很多文件; - )
答案 0 :(得分:0)
这是一个有根据的猜测,基于你在问题中所展示的内容以及RequireJS失败模式的经验。我猜"./common/global.min"
不是模块名称。 (如果要检查此项,请打开优化的捆绑包并查看所有define
次调用。如果发现它们都没有"./common/global.min"
,则它不是模块名称。)
当您需要"./common/global.min"
时,RequireJS会加载相应的文件,然后在其中查找名为"./common/global.min"
的模块。它找不到,你的代码也无法运行。
解决此问题的一种方法是使用RequireJS配置和优化的捆绑包来映射这样的名称:
paths: {
'../application1/application': './common/global.min'
'../application2/application': './common/global.min'
}
使用这些模块名称而不是require
来调用"./common/global.min"
。这个配置告诉RequireJS“当你在寻找这些模块时,查看那个文件:它们就在那里”,这确实是优化过程的作用。