templatecache angularjs requirejs gruntjs angular-ui grunt-contrib-requirejs

angularjs - templatecache - Calza de grunt-contrib-requirejs no envolviendo la biblioteca



npm angular templatecache (1)

Es solo una suposición descabellada (dependiendo de la versión de su optimizador) pero la configuración de documentación no es tan genial aquí:

A partir de 2.1.11, las dependencias cortadas se pueden envolver en un contenedor define () para ayudar cuando las dependencias intermedias son AMD tienen dependencias propias. El ejemplo canónico es un proyecto que usa Backbone, que depende de jQuery y Underscore. Las dependencias cortadas que quieren que Backbone esté disponible inmediatamente no lo verán en una compilación, ya que las versiones compatibles de AMD de Backbone no ejecutarán la función define () hasta que las dependencias estén listas. Al incluir esas dependencias cortadas, esto se puede evitar, pero podría introducir otros errores si esas dependencias cortadas usan el alcance global de maneras extrañas, por lo que no es el comportamiento predeterminado para ajustar.

entonces tal vez use:

wrapShim: true

https://github.com/jrburke/r.js/blob/master/build/example.build.js

ya que al usar "mainConfigFile" la configuración shim ya debería estar en el optimizador, este es a menudo otro punto de falla.

Estoy usando requirejs y configurando mis artefactos de productos, combinando así mis bibliotecas y configurando las dependencias de los módulos entre ellas para obtener la secuencia de carga apropiada usando la tarea de grunt para requirejs. No tengo problemas para usar la inyección del módulo de tiempo de ejecución en mi servidor de carga en vivo que tiene acceso a bibliotecas no combinadas. En aras de la claridad, he desactivado toda la minificación / uglificación y activo un js-beautify.

requirejs: { dist: { // Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js options: { // `name` and `out` is set by grunt-usemin // name: ''App'', baseUrl: yeomanConfig.app + ''/scripts'', mainConfigFile: yeomanConfig.app + ''/scripts/config.js'', out: yeomanConfig.dist + ''/scripts/main.js'', optimize: ''none'', // TODO: Figure out how to make sourcemaps work with grunt-usemin // https://github.com/yeoman/grunt-usemin/issues/30 //generateSourceMaps: true, // required to support SourceMaps // http://requirejs.org/docs/errors.html#sourcemapcomments beautify: false, removeCombined: false, generateSourceMaps: false, preserveLicenseComments: false, useStrict: true, mangle: false, compress: false, // wrap: true, // https://github.com/mishoo/UglifyJS2 } } },

Estoy usando Kendo, Angular y Angular-Keno-UI. Entiendo que Kendo está listo para el módulo AMD pero no parece que Angular-Keno-UI lo esté. Esperaba crear un shim y estar envuelto en la función de definición requirejs apropiada, sin embargo, no creo que esto esté sucediendo.

require.config({ cjsTranslate: true, paths: { jquery: ''vendor/jquery/jquery'', ''angular-kendo-ui'': ''vendor/angular-kendo-ui/build/angular-kendo'', kendo: ''vendor/kendoui.complete.2013.2.918.trial/js/kendo.all.min'', angular: ''vendor/angular/angular'', requirejs: ''vendor/requirejs/require'', ''angular-animate'': ''vendor/angular-animate/angular-animate'', ''angular-ui-router'': ''vendor/angular-ui-router/release/angular-ui-router.min'', ''angular-resource'': ''vendor/angular-resource/angular-resource'' }, shim: { jquery: { exports: ''$'' }, angular: { deps: [ ''jquery'' ], exports: ''angular'' }, ''angular-resource'': { deps: [ ''angular'' ] }, ''angular-kendo-ui'': { deps: [ ''angular'', ''kendo'' ] }, ''angular-ui-router'': { deps: [ ''angular'' ] } } });

Para resolver la falta de preparación del módulo, lo envuelvo yo mismo como tal:

define(''angular-kendo-ui'', [ ''angular'', ''kendo'' ], function ( angular, kendo ) { < original angular-kendo-ui source > });

¿He entendido mal la aplicación de las cuñas? Parece que tengo y en realidad no ajusta la ruta definida, sino que solo apunta a ella si se solicita el módulo (lo cual está bien en la carga del módulo dinámico)

Durante mi examen inicial de estas tecnologías, noté EN ALGÚN LUGAR que había una manera de tener requirejs (o uno de los mutadores de activos en mi pipeline) automáticamente envolver módulos para mí. Alguien tiene una pista para mí, supongo que era requirejs que envolvería los módulos definidos en la configuración como rutas, pero tal vez estaba equivocado. A continuación se muestra una copia impresa de las tareas que se ejecutan:

Done, without errors. Elapsed time build 887ms useminPrepare:html 22ms concurrent:dist 8s autoprefixer:dist 174ms requirejs:dist 19s jsbeautifier:dist 2s concat:public/styles/main.css 46ms concat:public/scripts/main.js 56ms cssmin:public/styles/main.css 81ms copy:dist 26ms usemin:html 5s usemin:css 24s