Estoy luchando con el optimizador requirejs y los módulos que no son de AMD

Estoy luchando con el optimizador requirejs. Este código funcionará si lo cargo en el navegador sin optimización. Si ejecuto el optimizador obtengo

: ENOENT, no such file or directory 'C:\Users\dev\checkout\src\main\webapp\resources\scripts\
json2.js'

In module tree: main

Este es el codigo

requirejs.config({
paths : {
    jquery : "lib/jquery",
    bootstrap : "lib/bootstrap",
    modals : "lib/modals",
    tablesort : "lib/tablesort",
    json2 : "lib/json2"
},

shim : {
    "bootstrap" : [ "jquery" ],
    "modals" : [ "jquery" ],
    "tablesort" : [ "jquery" ],
    "json2" : [ "jquery" ]
}
});

require([ "jquery", "json2","bootstrap", "modals", "tablesort", "registermodule",    "personsmodule" ], function($) {

¿Qué hay que hacer para que el optimizador funcione? Intenté poner lib/json2 en require. Luego tengo problemas con jQuery porque no son módulos AMD.

Editar: todavía estoy luchando con este. Intenté el ejemplo más simple. Funciona bien en el navegador, pero el optimizador se queja de que no encuentra los archivos. lib/jquery.js y lib/modal.js.

requirejs.config({
paths : {
    jquery : "lib/jquery",
    modals : "lib/modals"
},

shim : {
    "bootstrap" : [ "jquery" ],
    "modals" : [ "jquery" ]
}
});

require([ "jquery", "modals" ], function($) {

console.log($("#leverandor_span").text());
$("#register_modal").modal("show");

});

preguntado el 04 de julio de 12 a las 07:07

Estoy atascado con el mismo problema! ¿Cualquier progreso? -

2 Respuestas

Ver mainConfigFile. Esto se implementó para que no tenga que copiar su configuración requerida en archivos de tiempo de ejecución/optimización, manteniendo su compilación SECA:

//By default all the configuration for optimization happens from the command
//line or by properties in the config file, and configuration that was
//passed to requirejs as part of the app's runtime "main" JS file is *not*
//considered. However, if you prefer the "main" JS file configuration
//to be read for the build so that you do not have to duplicate the values
//in a separate configuration, set this property to the location of that
//main JS file. The first requirejs({}), require({}), requirejs.config({}),
//or require.config({}) call found in that file will be used.
mainConfigFile: '../some/path/to/main.js',

Respondido el 20 de diciembre de 13 a las 22:12

no sabia eso Esto es muy conveniente para simplificar las cosas en la etapa de desarrollo. Agradable. - marcelo de zen

El problema: r.js no analiza require.config(). Esa configuración es solo para tiempo de ejecución. Para r.js necesitamos crear otro archivo para configurar las rutas y otras cosas.

Cree un archivo (por ejemplo, app.build.js) y configure las rutas

({
   appDir: "../",
   baseUrl: "./",
   dir: "dist",
   modules: [
        {
            name: "bootloader"
        }
    ],
    paths: {
       // libraries path
      "json": "lib/json2",
      "jquery": "lib/jquery",
      "underscore": "lib/underscore",
      "bootstrap": "lib/bootstrap",
      "backbone": "lib/backbone",
      "hogan": "lib/hogan",

       // require plugins
      "css": "lib/css",
      "hgn": "lib/hgn",
      "text": "lib/text"
   }
})

ejecuta el optimizador:

$r.js -o app.build.js

Más detalles aquí: http://japhr.blogspot.it/2011/12/optimizing-requirejs-part-2.html

Opciones de archivo de compilación: http://requirejs.org/docs/optimization.html#wholeproject

Respondido 12 Jul 12, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.