# Class yii\console\controllers\AssetController

Inheritance | yii\console\controllers\AssetController » yii\console\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
Implements | yii\base\Configurable, yii\base\ViewContextInterface
Available since version | 2.0
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/console/controllers/AssetController.php

Allows you to combine and compress your JavaScript and CSS files.

Usage:

1. Create a configuration file using the `template` action:

   yii asset/template /path/to/myapp/config.php

2. Edit the created config file, adjusting it for your web application needs.

3. Run the 'compress' action, using created config:

   yii asset /path/to/myapp/config.php /path/to/myapp/config/assets_compressed.php

4. Adjust your web application config to use compressed assets.

Note: in the console environment some path aliases like `@webroot` and `@web` may not exist, so corresponding paths inside the configuration should be specified directly.

Note: by default this command relies on an external tools to perform actual files compression, check $jsCompressor and $cssCompressor for more details.

## Public Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---
$action | yii\base\Action|null | The action that is currently being executed. | yii\base\Controller
$assetManager | yii\web\AssetManager | Asset manager instance. Note that the type of this property differs in getter and setter. See getAssetManager() and setAssetManager() for details. | yii\console\controllers\AssetController
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component. This property is read-only. | yii\base\Component
$bundles | array | List of asset bundles to be compressed. | yii\console\controllers\AssetController
$color | boolean|null | Whether to enable ANSI color in the output. | yii\console\Controller
$cssCompressor | string|callable | CSS file compressor. | yii\console\controllers\AssetController
$defaultAction | string | Controller default action ID. | yii\console\controllers\AssetController
$deleteSource | boolean | Whether to delete asset source files after compression. | yii\console\controllers\AssetController
$help | boolean | Whether to display help information about current command. | yii\console\Controller
$helpSummary | string | This property is read-only. | yii\console\Controller
$id | string | The ID of this controller. | yii\base\Controller
$interactive | boolean | Whether to run the command interactively. | yii\console\Controller
$jsCompressor | string|callable | JavaScript file compressor. | yii\console\controllers\AssetController
$layout | null|string|false | The name of the layout to be applied to this controller's views. | yii\base\Controller
$module | yii\base\Module | The module that this controller belongs to. | yii\base\Controller
$modules | yii\base\Module[] | All ancestor modules that this controller is located within. This property is read-only. | yii\base\Controller
$passedOptionValues | array | The properties corresponding to the passed options. This property is read-only. | yii\console\Controller
$passedOptions | array | The names of the options passed during execution. This property is read-only. | yii\console\Controller
$request | yii\console\Request |  | yii\console\Controller
$response | yii\console\Response |  | yii\console\Controller
$route | string | The route (module ID, controller ID and action ID) of the current request. This property is read-only. | yii\base\Controller
$silentExitOnException | boolean|null | If true - script finish with `ExitCode::OK` in case of exception. | yii\console\Controller
$targets | array | List of asset bundles, which represents output compressed files. | yii\console\controllers\AssetController
$uniqueId | string | The controller ID that is prefixed with the module ID (if any). This property is read-only. | yii\base\Controller
$view | yii\base\View|yii\web\View | The view object that can be used to render views or view files. | yii\base\Controller
$viewPath | string | The directory containing the view files for this controller. | yii\base\Controller

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
__call() | Calls the named method which is not a class method. | yii\base\Component
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component
__construct() |  | yii\base\Controller
__get() | Returns the value of a component property. | yii\base\Component
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component
__set() | Sets the value of a component property. | yii\base\Component
__unset() | Sets a component property to be null. | yii\base\Component
actionCompress() | Combines and compresses the asset files according to the given configuration. | yii\console\controllers\AssetController
actionTemplate() | Creates template of configuration file for actionCompress(). | yii\console\controllers\AssetController
actions() | Declares external actions for the controller. | yii\base\Controller
afterAction() | This method is invoked right after an action is executed. | yii\base\Controller
ansiFormat() | Formats a string with ANSI codes. | yii\console\Controller
attachBehavior() | Attaches a behavior to this component. | yii\base\Component
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component
beforeAction() | This method is invoked right before an action is executed. | yii\console\Controller
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component
bindActionParams() | Binds the parameters to the action. | yii\console\Controller
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component
className() | Returns the fully qualified name of this class. | yii\base\BaseObject
combineCssFiles() | Combines CSS files into a single one. | yii\console\controllers\AssetController
combineJsFiles() | Combines JavaScript files into a single one. | yii\console\controllers\AssetController
confirm() | Asks user to confirm by typing y or n. | yii\console\Controller
createAction() | Creates an action based on the given action ID. | yii\base\Controller
detachBehavior() | Detaches a behavior from the component. | yii\base\Component
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component
findLayoutFile() | Finds the applicable layout file. | yii\base\Controller
getActionArgsHelp() | Returns the help information for the anonymous arguments for the action. | yii\console\Controller
getActionHelp() | Returns the detailed help information for the specified action. | yii\console\Controller
getActionHelpSummary() | Returns a one-line short summary describing the specified action. | yii\console\Controller
getActionOptionsHelp() | Returns the help information for the options for the action. | yii\console\Controller
getAssetManager() | Returns the asset manager instance. | yii\console\controllers\AssetController
getBehavior() | Returns the named behavior object. | yii\base\Component
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component
getHelp() | Returns help information for this controller. | yii\console\Controller
getHelpSummary() | Returns one-line short summary describing this controller. | yii\console\Controller
getModules() | Returns all ancestor modules of this controller. | yii\base\Controller
getOptionValues() | Returns properties corresponding to the options for the action id Child classes may override this method to specify possible properties. | yii\console\Controller
getPassedOptionValues() | Returns the properties corresponding to the passed options. | yii\console\Controller
getPassedOptions() | Returns the names of valid options passed during execution. | yii\console\Controller
getRoute() | Returns the route of the current request. | yii\base\Controller
getUniqueId() | Returns the unique ID of the controller. | yii\base\Controller
getView() | Returns the view object that can be used to render views or view files. | yii\base\Controller
getViewPath() | Returns the directory containing view files for this controller. | yii\base\Controller
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component
init() | Initializes the object. | yii\base\Controller
isColorEnabled() | Returns a value indicating whether ANSI color is enabled. | yii\console\Controller
off() | Detaches an existing event handler from this component. | yii\base\Component
on() | Attaches an event handler to an event. | yii\base\Component
optionAliases() | Returns option alias names. | yii\console\Controller
options() | Returns the names of valid options for the action (id) An option requires the existence of a public member variable whose name is the option name. | yii\console\Controller
prompt() | Prompts the user for input and validates it. | yii\console\Controller
render() | Renders a view and applies layout if available. | yii\base\Controller
renderContent() | Renders a static string by applying a layout. | yii\base\Controller
renderFile() | Renders a view file. | yii\base\Controller
renderPartial() | Renders a view without applying layout. | yii\base\Controller
run() | Runs a request specified in terms of a route. | yii\base\Controller
runAction() | Runs an action with the specified action ID and parameters. | yii\console\Controller
select() | Gives the user an option to choose from. Giving '?' as an input will show a list of options to choose from and their explanations. | yii\console\Controller
setAssetManager() | Sets asset manager instance or configuration. | yii\console\controllers\AssetController
setView() | Sets the view object to be used by this controller. | yii\base\Controller
setViewPath() | Sets the directory that contains the view files. | yii\base\Controller
stderr() | Prints a string to STDERR. | yii\console\Controller
stdout() | Prints a string to STDOUT. | yii\console\Controller
trigger() | Triggers an event. | yii\base\Component

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
adjustCssUrl() | Adjusts CSS content allowing URL references pointing to the original resources. | yii\console\controllers\AssetController
adjustDependency() | Adjust dependencies between asset bundles in the way source bundles begin to depend on output ones. | yii\console\controllers\AssetController
bindInjectedParams() | Fills parameters based on types and names in action method signature. | yii\base\Controller
buildTarget() | Builds output asset bundle. | yii\console\controllers\AssetController
compressCssFiles() | Compresses given CSS files and combines them into the single one. | yii\console\controllers\AssetController
compressJsFiles() | Compresses given JavaScript files and combines them into the single one. | yii\console\controllers\AssetController
getActionMethodReflection() |  | yii\console\Controller
loadBundles() | Creates full list of source asset bundles. | yii\console\controllers\AssetController
loadConfiguration() | Applies configuration from the given file to self instance. | yii\console\controllers\AssetController
loadDependency() | Loads asset bundle dependencies recursively. | yii\console\controllers\AssetController
loadTargets() | Creates full list of output asset bundles. | yii\console\controllers\AssetController
parseDocCommentDetail() | Returns full description from the docblock. | yii\console\Controller
parseDocCommentSummary() | Returns the first line of docblock. | yii\console\Controller
parseDocCommentTags() | Parses the comment block into tags. | yii\console\Controller
registerBundle() | Registers asset bundles including their dependencies. | yii\console\controllers\AssetController
saveTargets() | Saves new asset bundles configuration. | yii\console\controllers\AssetController

## Events

Hide inherited events

Event | Type | Description | Defined By
--- | --- | --- | ---
EVENT_AFTER_ACTION | yii\base\ActionEvent | An event raised right after executing a controller action. | yii\base\Controller
EVENT_BEFORE_ACTION | yii\base\ActionEvent | An event raised right before executing a controller action. | yii\base\Controller

## Constants

Hide inherited constants

Constant | Value | Description | Defined By
--- | --- | --- | ---
EXIT_CODE_ERROR | 1 | Deprecated since 2.0.13. Use yii\console\ExitCode::UNSPECIFIED_ERROR instead. | yii\console\Controller
EXIT_CODE_NORMAL | 0 | Deprecated since 2.0.13. Use yii\console\ExitCode::OK instead. | yii\console\Controller

## Property Details

$assetManager public property

Asset manager instance. Note that the type of this property differs in getter and setter. See getAssetManager() and setAssetManager() for details.

public yii\web\AssetManager $assetManager = null
$bundles public property

List of asset bundles to be compressed.

public array $bundles = []
$cssCompressor public property

CSS file compressor. If a string, it is treated as shell command template, which should contain placeholders {from} - source file name - and {to} - output file name. Otherwise, it is treated as PHP callback, which should perform the compression.

Default value relies on usage of "YUI Compressor"

See also https://github.com/yui/yuicompressor/.

public string|callable $cssCompressor = 'java -jar yuicompressor.jar --type css {from} -o {to}'
$defaultAction public property

Controller default action ID.

public string $defaultAction = 'compress'
$deleteSource public property (available since version 2.0.10)

Whether to delete asset source files after compression. This option affects only those bundles, which have yii\web\AssetBundle::$sourcePath is set.

public boolean $deleteSource = false
$jsCompressor public property

JavaScript file compressor. If a string, it is treated as shell command template, which should contain placeholders {from} - source file name - and {to} - output file name. Otherwise, it is treated as PHP callback, which should perform the compression.

Default value relies on usage of "Closure Compiler"

See also https://developers.google.com/closure/compiler/.

public string|callable $jsCompressor = 'java -jar compiler.jar --js {from} --js_output_file {to}'
$targets public property

List of asset bundles, which represents output compressed files. You can specify the name of the output compressed file using 'css' and 'js' keys: For example:

    'app\config\AllAsset' => [
        'js' => 'js/all-{hash}.js',
        'css' => 'css/all-{hash}.css',
        'depends' => [ ... ],
    ]

File names can contain placeholder "{hash}", which will be filled by the hash of the resulting file.

You may specify several target bundles in order to compress different groups of assets. In this case you should use 'depends' key to specify, which bundles should be covered with particular target bundle. You may leave 'depends' to be empty for single bundle, which will compress all remaining bundles in this case. For example:

    'allShared' => [
        'js' => 'js/all-shared-{hash}.js',
        'css' => 'css/all-shared-{hash}.css',
        'depends' => [
            // Include all assets shared between 'backend' and 'frontend'
            'yii\web\YiiAsset',
            'app\assets\SharedAsset',
        ],
    ],
    'allBackEnd' => [
        'js' => 'js/all-{hash}.js',
        'css' => 'css/all-{hash}.css',
        'depends' => [
            // Include only 'backend' assets:
            'app\assets\AdminAsset'
        ],
    ],
    'allFrontEnd' => [
        'js' => 'js/all-{hash}.js',
        'css' => 'css/all-{hash}.css',
        'depends' => [], // Include all remaining assets
    ],

public array $targets = []

## Method Details

actionCompress() public method

Combines and compresses the asset files according to the given configuration.

During the process new asset bundle configuration file will be created. You should replace your original asset bundle configuration with this file in order to use compressed files.

public void actionCompress ( $configFile, $bundleFile )
$configFile | string | Configuration file name.
$bundleFile | string | Output asset bundles configuration file name.

actionTemplate() public method

Creates template of configuration file for actionCompress().

public integer actionTemplate ( $configFile )
$configFile | string | Output file name.
return | integer | CLI exit code
throws | yii\console\Exception | on failure.

adjustCssUrl() protected method

Adjusts CSS content allowing URL references pointing to the original resources.

protected string adjustCssUrl ( $cssContent, $inputFilePath, $outputFilePath )
$cssContent | string | Source CSS content.
$inputFilePath | string | Input CSS file name.
$outputFilePath | string | Output CSS file name.
return | string | Adjusted CSS content.

adjustDependency() protected method

Adjust dependencies between asset bundles in the way source bundles begin to depend on output ones.

protected yii\web\AssetBundle[] adjustDependency ( $targets, $bundles )
$targets | yii\web\AssetBundle[] | Output asset bundles.
$bundles | yii\web\AssetBundle[] | Source asset bundles.
return | yii\web\AssetBundle[] | Output asset bundles.

buildTarget() protected method

Builds output asset bundle.

protected void buildTarget ( $target, $type, $bundles )
$target | yii\web\AssetBundle | Output asset bundle
$type | string | Either 'js' or 'css'.
$bundles | yii\web\AssetBundle[] | Source asset bundles.
throws | yii\console\Exception | on failure.

combineCssFiles() public method

Combines CSS files into a single one.

public void combineCssFiles ( $inputFiles, $outputFile )
$inputFiles | array | Source file names.
$outputFile | string | Output file name.
throws | yii\console\Exception | on failure.

combineJsFiles() public method

Combines JavaScript files into a single one.

public void combineJsFiles ( $inputFiles, $outputFile )
$inputFiles | array | Source file names.
$outputFile | string | Output file name.
throws | yii\console\Exception | on failure.

compressCssFiles() protected method

Compresses given CSS files and combines them into the single one.

protected void compressCssFiles ( $inputFiles, $outputFile )
$inputFiles | array | List of source file names.
$outputFile | string | Output file name.
throws | yii\console\Exception | on failure

compressJsFiles() protected method

Compresses given JavaScript files and combines them into the single one.

protected void compressJsFiles ( $inputFiles, $outputFile )
$inputFiles | array | List of source file names.
$outputFile | string | Output file name.
throws | yii\console\Exception | on failure

getAssetManager() public method

Returns the asset manager instance.

public yii\web\AssetManager getAssetManager ( )
return | yii\web\AssetManager | Asset manager instance.
throws | yii\console\Exception | on invalid configuration.

loadBundles() protected method

Creates full list of source asset bundles.

protected yii\web\AssetBundle[] loadBundles ( $bundles )
$bundles | string[] | List of asset bundle names
return | yii\web\AssetBundle[] | List of source asset bundles.

loadConfiguration() protected method

Applies configuration from the given file to self instance.

protected void loadConfiguration ( $configFile )
$configFile | string | Configuration file name.
throws | yii\console\Exception | on failure.

loadDependency() protected method

Loads asset bundle dependencies recursively.

protected void loadDependency ( $bundle, &$result )
$bundle | yii\web\AssetBundle | Bundle instance
$result | array | Already loaded bundles list.
throws | yii\console\Exception | on failure.

loadTargets() protected method

Creates full list of output asset bundles.

protected yii\web\AssetBundle[] loadTargets ( $targets, $bundles )
$targets | array | Output asset bundles configuration.
$bundles | yii\web\AssetBundle[] | List of source asset bundles.
return | yii\web\AssetBundle[] | List of output asset bundles.
throws | yii\console\Exception | on failure.

registerBundle() protected method

Registers asset bundles including their dependencies.

protected void registerBundle ( $bundles, $name, &$registered )
$bundles | yii\web\AssetBundle[] | Asset bundles list.
$name | string | Bundle name.
$registered | array | Stores already registered names.
throws | yii\console\Exception | if circular dependency is detected.

saveTargets() protected method

Saves new asset bundles configuration.

protected void saveTargets ( $targets, $bundleFile )
$targets | yii\web\AssetBundle[] | List of asset bundles to be saved.
$bundleFile | string | Output file name.
throws | yii\console\Exception | on failure.

setAssetManager() public method

Sets asset manager instance or configuration.

public void setAssetManager ( $assetManager )
$assetManager | yii\web\AssetManager|array | Asset manager instance or its array configuration.
throws | yii\console\Exception | on invalid argument type.