2015-05-25 13 views
6

Yii consente di minimizzare e comprimere JS. Voglio comprimere tutto il JS dell'app e utilizzare il jQuery ospitato da Google. Come faccio a fare questo?Come si minimizzano tutte le risorse TRANNE jQuery in Yii?

Yii consente di specificare la fonte per jQuery http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#customizing-asset-bundles

Ma sto già utilizzando il tasto bundles per il compressed assets:

'bundles' => require(__DIR__ . '/' . (YII_ENV_PROD ? 'assets-prod.php' : 'assets-dev.php')), 

assets-prod.php viene generato automaticamente. Ho provato la personalizzazione del pacchetto di asset durante la compressione con questo

assets.php
// Asset manager configuration: 
'assetManager' => [ 
    'basePath' => '@webroot/assets', 
    'baseUrl' => '@web/assets', 
    'bundles' => [ 
     'yii\web\JqueryAsset' => [ 
     'sourcePath' => null, // do not publish the bundle 
     'js' => [ 
      '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js', 
     ], 
     ], 
    ], 
], 

Ma quando mi sono imbattuto yii asset assets.php config/assets-prod.php non ha generato alcun file jQuery a tutti. Questo è quasi ciò che volevo, ma quando ho caricato la pagina, jQuery mancava del tutto. Non c'era alcun riferimento a jQuery. Ha creato questo assets-prod.php, che sembra sbagliato

'yii\\web\\JqueryAsset' => [ 
    'sourcePath' => null, 
    'js' => [], 
    'css' => [], 
    'depends' => [], 
], 

Ok così ho poi provato Asset Mapping http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#asset-mapping. Ho messo questo in web.php

 'assetMap' => [ 
     'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js', 
     ], 

Tuttavia, ancora non sarebbe caricare jQuery. Ho ripristinato assets.php e ho eseguito nuovamente yii asset assets.php config/assets-prod.php, ma poi è tornato a inserire jQuery nell'unico file JS minificato.

risposta

0

è necessario utilizzare proprietà "baseurl", in questo modo:

class GoogleAsset extends AssetBundle{ 

    public $baseUrl = 'http://maps.googleapis.com/maps/api'; 

    public $js = [ 
     'js?sensor=false&language=ru-ru&region=ru-ru' 
    ]; 

} 
0

È possibile utilizzare questa configurazione

'yii\\web\\JqueryAsset' => [ 
    'baseUrl' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/', 
    'js' => ['jquery.min.js'], 
    'css' => [], 
    'depends' => [], 
],