2015-07-01 55 views
0

我学习使用r.js优化/缩小/丑化前端应用程序。到目前为止,它确实很酷且很有前途,但我正试图弄清楚如何做一件事。我希望能够将目录中的所有文件(js,css,html)连接到一个优化文件中,我可以将它放在前端的脚本标记中。优化RequireJS前端应用程序

到目前为止,我只成功地只把我的requirejs.config文件中列出的JS文件合并成一个优化的文件。

但我想知道如果有一种方法来连接不仅仅是那些在requirejs.config文件中列出多个文件 - 这里是我的参考文件requirejs.config:

requirejs.config({ 
    enforceDefine: false, 
    waitSeconds: 8, 
    baseUrl: '/static', 
    paths: { 
     'async': 'vendor/async', 
     'jquery': 'vendor/jquery', 
     'ejs': 'vendor/ejs', 
     'text': 'vendor/text', 
     'form2js': 'vendor/form2js', 
     'underscore': 'vendor/underscore', 
     'ijson':'vendor/idempotent-json', 
     'backbone': 'vendor/backbone', 
     'bootstrap': 'vendor/bootstrap', 
     'handlebars': 'vendor/handlebars', 
     'backbone-validation': 'vendor/backbone-validation-amd' 
     //'socketio': 'https://cdn.socket.io/socket.io-1.3.5' 
    }, 

    'shim': { 
     'underscore': { 
      'exports': '_' 
     }, 
     'backbone': { 
      'deps': ['jquery', 'underscore'], 
      'exports': 'Backbone' 
     }, 
     'handlebars': { 
      'exports': 'Handlebars' 
     }, 
     ejs: { 
      exports: "ejs" 
     } 
    } 
}); 

我build.js文件看起来像这样:

({ 
    "baseUrl": "./public/static", 
    "name": "app/js/main", 
    "mainConfigFile": "./public/static/app/js/main.js", 
    "out": "./public/static/app/js/optimized.js" 
}) 

其他build.js文件,我试图看起来像这样:

({ 
    "baseUrl": "./public/static", 
    "dir": "./js-built", 
    "mainConfigFile": "./public/static/app/js/main.js", 
    //"optimize": 'none', 

    "modules": [ 
     { 
      name: "app/js/main", 

      include: [ 
       "text" 
      ], 

      excludeShallow: [ 

      ] 
     } 


    ], 
}) 

就像我说的,build.js文件的第一个版本将requirejs.config中列出的所有JS文件连接成一个文件(在我的例子中为optimized.js)。 build.js文件的第二个版本复制整个目录并缩小所有文件,但保持目录结构不变。

我想要做的是结合第一和​​第二。缩小目录中的所有文件,但将它们全部连接成一个文件。

这可能吗?

如何做到这一点我的一个猜测是简单地列出所有我想连接我的requirejs.config内,然后使用我提到的第一个build.js文件中的文件。它是否正确?

+0

看起来我可能需要在build.js文件中“optimizeAllPluginResources:true” – Olegzandr

回答

1

不,你不能合并两个脚本,因为在第一个脚本中你只是优化一个文件(这就是优化创建单个文件的原因:'out'参数),在第二个脚本中,重新优化整个目录(这就是为什么你使用'dir'参数来复制所有优化的资源)。实际上,在同一个脚本中同时使用'dir'和'out'参数会在您启动优化时产生错误。 随着第二个脚本的使用,你将在js-built目录中优化main.js,为什么你不使用那个?

而且这些参数可以在你的脚本对你有用: optimizeCss: 'standard'(丑化css文件), removeCombined: true(去掉优化过程中已经包括在其他文件)

看一看this website更多信息。