{"id":13623828,"url":"https://github.com/gruntjs/grunt-contrib-uglify","last_synced_at":"2025-05-13T20:19:22.972Z","repository":{"id":4904632,"uuid":"6060783","full_name":"gruntjs/grunt-contrib-uglify","owner":"gruntjs","description":"Minify files with UglifyJS.","archived":false,"fork":false,"pushed_at":"2024-07-02T05:08:36.000Z","size":1175,"stargazers_count":1477,"open_issues_count":29,"forks_count":350,"subscribers_count":51,"default_branch":"main","last_synced_at":"2025-04-28T11:52:23.838Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"http://gruntjs.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"alanctgardner/impala-football-heatmap","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gruntjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-MIT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-10-03T13:54:20.000Z","updated_at":"2025-04-04T13:25:00.000Z","dependencies_parsed_at":"2024-02-01T20:09:12.810Z","dependency_job_id":"84e0ae39-8f03-4407-97ee-e3189be0083c","html_url":"https://github.com/gruntjs/grunt-contrib-uglify","commit_stats":{"total_commits":316,"total_committers":72,"mean_commits":4.388888888888889,"dds":0.8417721518987342,"last_synced_commit":"e8003dd90f96f1c0a56c6c79f556482e9728dbef"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruntjs%2Fgrunt-contrib-uglify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruntjs%2Fgrunt-contrib-uglify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruntjs%2Fgrunt-contrib-uglify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruntjs%2Fgrunt-contrib-uglify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gruntjs","download_url":"https://codeload.github.com/gruntjs/grunt-contrib-uglify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020659,"owners_count":22000757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-08-01T21:01:36.108Z","updated_at":"2025-05-13T20:19:22.948Z","avatar_url":"https://github.com/gruntjs.png","language":"JavaScript","funding_links":[],"categories":["Minifiers - JS \u0026 CSS","hacktoberfest","Minifiers"],"sub_categories":["Meetups"],"readme":"# grunt-contrib-uglify v5.2.1 [![Build Status](https://github.com/gruntjs/grunt-contrib-uglify/workflows/Tests/badge.svg)](https://github.com/gruntjs/grunt-contrib-uglify/actions?workflow=Tests)\n\n\u003e Minify JavaScript files with UglifyJS\n\n\n\n## Getting Started\n\nIf you haven't used [Grunt](https://gruntjs.com/) before, be sure to check out the [Getting Started](https://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](https://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-uglify --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-uglify');\n```\n\n\n\n\n## Uglify task\n_Run this task with the `grunt uglify` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](https://gruntjs.com/configuring-tasks) guide.\n\n### Options\n\nThis task primarily delegates to [UglifyJS](https://github.com/mishoo/UglifyJS2), so please consider their documentation as required reading for advanced configuration.\n\n\n###### Deprecated options from `2.x`\n\nOption                  | Replacement\n----------------------- | -----------\nASCIIOnly               | output.ascii_only\nenclose                 | \u0026mdash;\nexportAll               | \u0026mdash;\nexpression              | parse.expression\nindentLevel             | output.indent_level\nmangleProperties        | mangle.properties\nmaxLineLen              | output.max\\_line_len\npreserveComments        | output.comments\nquoteStyle              | output.quote_style\nscrewIE8                | !ie8\nsourceMapIncludeSources | sourceMap.includeSources\nsourceMapRoot           | sourceMap.root\nsourceMapUrl            | sourceMap.url\n\n\n#### mangle\nType: `Boolean` `Object`  \nDefault: `{}`\n\nTurn on or off mangling with default options. If an `Object` is specified, it is passed directly to `ast.mangle_names()` *and* `ast.compute_char_frequency()` (mimicking command line behavior). [View all options here](https://github.com/mishoo/UglifyJS2#mangle-options).\n\n#### compress\nType: `Boolean` `Object`  \nDefault: `{}`\n\nTurn on or off source compression with default options. If an `Object` is specified, it is passed as options to `UglifyJS.Compressor()`. [View all options here](https://github.com/mishoo/UglifyJS2#compress-options).\n\n#### beautify\nType: `Boolean` `Object`  \nDefault: `false`\n\nTurns on beautification of the generated source code. [View all options here](https://github.com/mishoo/UglifyJS2#output-options)\n\n###### parse.expression\nType: `Boolean`  \nDefault: `false`\n\nParse a single expression, rather than a program (for parsing JSON)\n\n#### report\nType: `string`  \nChoices: `'min'`, `'gzip'`  \nDefault: `'min'`\n\nReport minification result or both minification and gzip results.\nThis is useful to see exactly how well uglify-js is performing but using `'gzip'` will make the task take 5-10x longer to complete. [Example output](https://github.com/sindresorhus/maxmin#readme).\n\n#### sourceMap\nType: `Boolean`  \nDefault: `false`\n\nIf `true`, a source map file will be generated in the same directory as the `dest` file. By default it will have the same basename as the `dest` file, but with a `.map` extension.\n\n#### sourceMapName\nType: `String` `Function`  \nDefault: `undefined`\n\nTo customize the name or location of the generated source map, pass a string to indicate where to write the source map to. If a function is provided, the uglify destination is passed as the argument and the return value will be used as the file name.\n\n#### sourceMapIn\nType: `String` `Function`  \nDefault: `undefined`\n\nThe location of an input source map from an earlier compilation, e.g. from CoffeeScript. If a function is provided, the\nuglify source is passed as the argument and the return value will be used as the sourceMap name. This only makes sense\nwhen there's one source file.\n\n#### sourceMap.includeSources\nType: `Boolean`  \nDefault: `false`\n\nPass this flag if you want to include the content of source files in the source map as sourcesContent property.\n\n###### sourceMap.root\nType: `String`  \nDefault: `undefined`\n\nWith this option you can customize root URL that browser will use when looking for sources.\n\nIf the sources are not absolute URLs after prepending of the `sourceMap.root`, the sources are resolved relative to the source map.\n\n#### sourceMap.url\nType: `String`  \nDefault: `undefined`\n\nOverride the calculated value for `sourceMappingURL` in the source map. This is useful if the source map location is not relative to the base path of the minified file, i.e. when using a CDN\n\n#### wrap\nType: `String`  \nDefault: `undefined`\n\nWrap all of the code in a closure, an easy way to make sure nothing is leaking.\nFor variables that need to be public `exports` and `global` variables are made available.\nThe value of wrap is the global variable exports will be available as.\n\n#### output.ascii_only\nType: `Boolean`  \nDefault: `false`\n\nEnables to encode non-ASCII characters as \\uXXXX.\n\n#### output.comments\nType: `Boolean` `String` `Function`  \nDefault: `undefined`  \nOptions: `false` `'all'` `'some'`\n\nTurn on preservation of comments.\n\n- `false` will strip all comments\n- `'all'` will preserve all comments in code blocks that have not been squashed or dropped\n- `'some'` will preserve all comments that include a closure compiler style directive (`@preserve` `@license` `@cc_on`)\n- `Function` specify your own comment preservation function. You will be passed the current node and the current comment and are expected to return either `true` or `false`\n- `RegExp` `'/[RegExp]/'` will preserve comments matching given RegExp or stringified RegExp\n\n#### banner\nType: `String`  \nDefault: `''`\n\nThis string will be prepended to the minified output. Template strings (e.g. `\u003c%= config.value %\u003e`) will be expanded automatically.\n\n#### footer\nType: `String`  \nDefault: `''`\n\nThis string will be appended to the minified output. Template strings (e.g. `\u003c%= config.value %\u003e`) will be expanded automatically.\n\n#### ie8\nType: `Boolean`  \nDefault: `false`\n\nSet this to `true` if you still care about full compliance with Internet Explorer 6-8 quirks.\n\n#### mangle.properties\nType: `Boolean` `Object`  \nDefault: `false`\n\nTurn on or off property mangling with default options. If an `Object` is specified, it is passed directly to `ast.mangle_properties()` (mimicking command line behavior). [View all options here](https://github.com/mishoo/UglifyJS2#mangle-options).\n\n#### reserveDOMProperties\nType: `Boolean`  \nDefault: `false`\n\nUse this flag in conjunction with `mangle.properties` to prevent built-in browser object properties from being mangled.\n\n#### exceptionsFiles\nType: `Array`  \nDefault: `[]`\n\nUse this with `mangle.properties` to pass one or more JSON files containing a list of variables and object properties\nthat should not be mangled. See the [UglifyJS docs](https://www.npmjs.com/package/uglify-js) for more info on the file syntax.\n\n#### nameCache\nType: `String`  \nDefault: `''`\n\nA string that is a path to a JSON cache file that uglify will create and use to coordinate symbol mangling between\nmultiple runs of uglify. Note: this generated file uses the same JSON format as the `exceptionsFiles` files.\n\n#### output.quote_style\nType: `Integer`  \nDefault: `0`\n\nPreserve or enforce quotation mark style.\n\n* `0` will use single or double quotes such as to minimize the number of bytes (prefers double quotes when both will do)\n* `1` will always use single quotes\n* `2` will always use double quotes\n* `3` will preserve original quotation marks\n\n### Usage examples\n\n#### Basic compression\n\nThis configuration will compress and mangle the input files using the default options.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input1.js', 'src/input2.js']\n      }\n    }\n  }\n});\n```\n\n#### No mangling\n\nSpecify `mangle: false` to prevent changes to your variable and function names.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      mangle: false\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Reserved identifiers\n\nYou can specify identifiers to leave untouched with an `reserved` array in the `mangle` options.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      mangle: {\n        reserved: ['jQuery', 'Backbone']\n      }\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Source maps\n\nGenerate a source map by setting the `sourceMap` option to `true`. The generated\nsource map will be in the same directory as the destination file. Its name will be\nthe basename of the destination file with a `.map` extension. Override these\ndefaults with the `sourceMapName` attribute.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    my_target: {\n      options: {\n        sourceMap: true,\n        sourceMapName: 'path/to/sourcemap.map'\n      },\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Advanced source maps\n\nSet the `sourceMap.includeSources` option to `true` to embed your sources directly into the map. To include\na source map from a previous compilation pass it as the value of the `sourceMapIn` option.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    my_target: {\n      options: {\n        sourceMap: {\n          includeSources: true\n        },\n        sourceMapIn: 'example/coffeescript-sourcemap.js', // input sourcemap from a previous compilation\n      },\n      files: {\n        'dest/output.min.js': ['src/input.js'],\n      },\n    },\n  },\n});\n```\n\nRefer to the [UglifyJS SourceMap Documentation](https://github.com/mishoo/UglifyJS2#source-map-options) for more information.\n\n#### Turn off console warnings\n\nSpecify `drop_console: true` as part of the `compress` options to discard calls to `console.*` functions.\nThis will suppress warning messages in the console.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      compress: {\n        drop_console: true\n      }\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Beautify\n\nSpecify `beautify: true` to beautify your code for debugging/troubleshooting purposes.\nPass an object to manually configure any other output options.\n\nSee [UglifyJS documentation](https://github.com/mishoo/UglifyJS2#output-options) for more information.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    my_target: {\n      options: {\n        beautify: true\n      },\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    },\n    my_advanced_target: {\n      options: {\n        beautify: {\n          width: 80\n        }\n      },\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Banner comments\n\nIn this example, running `grunt uglify:my_target` will prepend a banner created by interpolating the `banner` template string with the config object. Here, those properties are the values imported from the `package.json` file (which are available via the `pkg` config property) plus today's date.\n\n_Note: you don't have to use an external JSON file. It's also valid to create the `pkg` object inline in the config. That being said, if you already have a JSON file, you might as well reference it._\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  pkg: grunt.file.readJSON('package.json'),\n  uglify: {\n    options: {\n      banner: '/*! \u003c%= pkg.name %\u003e - v\u003c%= pkg.version %\u003e - ' +\n        '\u003c%= grunt.template.today(\"yyyy-mm-dd\") %\u003e */'\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Conditional compilation\n\nYou can also enable UglifyJS conditional compilation. This is commonly used to remove debug code blocks for production builds. This is equivalent to the command line `--define` option.\n\nSee [UglifyJS global definitions documentation](https://github.com/mishoo/UglifyJS2#conditional-compilation) for more information.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      compress: {\n        global_defs: {\n          'DEBUG': false\n        },\n        dead_code: true\n      }\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Compiling all files in a folder dynamically\n\nThis configuration will compress and mangle the files dynamically.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    my_target: {\n      files: [{\n        expand: true,\n        cwd: 'src/js',\n        src: '**/*.js',\n        dest: 'dest/js'\n      }]\n    }\n  }\n});\n```\n\n#### Compiling all files separately in the each their path\n\nThis configuration will compress and mangle all js files separately in each folder.\n\nAlso exclude jQuery for mangling and ignore all `*.min.js` files.\n\n```js\n// Project configuration.\nuglify: {\n  dev: {\n    options: {\n      mangle: {\n        reserved: ['jQuery']\n      }\n    },\n    files: [{\n      expand: true,\n      src: ['dist/assets/js/*.js', '!dist/assets/js/*.min.js'],\n      dest: 'dist/assets',\n      cwd: '.',\n      rename: function (dst, src) {\n        // To keep the source js files and make new files as `*.min.js`:\n        // return dst + '/' + src.replace('.js', '.min.js');\n        // Or to override to src:\n        return src;\n      }\n    }]\n  }\n},\n```\n\n#### Turn on object property name mangling\n\nThis configuration will turn on object property name mangling, but not mangle built-in browser object properties.\nAdditionally, variables and object properties listed in the `myExceptionsFile.json` will be mangled. For more info,\non the format of the exception file format please see the [UglifyJS docs](https://www.npmjs.com/package/uglify-js).\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      mangle: {\n        properties: true\n      },\n      reserveDOMProperties: true,\n      exceptionsFiles: [ 'myExceptionsFile.json' ]\n    },\n    my_target: {\n      files: {\n        'dest/output.min.js': ['src/input.js']\n      }\n    }\n  }\n});\n```\n\n#### Turn on use of name mangling cache\n\nTurn on use of name mangling cache to coordinate mangled symbols between outputted uglify files. uglify will the\ngenerate a JSON cache file with the name provided in the options. Note: this generated file uses the same JSON format\nas the `exceptionsFiles` files.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n  uglify: {\n    options: {\n      nameCache: '.tmp/grunt-uglify-cache.json',\n    },\n    my_target: {\n      files: {\n        'dest/output1.min.js': ['src/input1.js'],\n        'dest/output2.min.js': ['src/input2.js']\n      }\n    }\n  }\n});\n```\n\n\n## Release History\n\n * 2022-03-27   v5.1.0   Update dependencies. uglify-js ^3.15.2. Requires node 12+.\n * 2020-07-16   v5.0.0   Requires node 10+. Update dependencies.\n * 2019-03-21   v4.0.1   Update uglify-js to v3.5.0. Update dependencies.\n * 2018-08-26   v4.0.0   Update dependencies. Requires Node.js \u003e= 6.\n * 2018-07-29   v3.4.0   Update uglify-js to v3.4.0.\n * 2017-12-24   v3.3.0   Update uglify-js to v3.3.0.\n * 2017-11-26   v3.2.1   Update uglify-js to v3.2.0.\n * 2017-09-11   v3.1.0   Update uglify-js to v3.1.0.\n * 2017-05-20   v3.0.1   Fix toplevel option.\n * 2017-05-12   v3.0.0   Update uglify-js to v3.0.4.\n * 2017-04-05   v2.3.0   Make CLI output less verbose.\n * 2017-03-31   v2.2.1   Fix banner option.\n * 2017-03-01   v2.2.0   Update uglify-js to v2.8.3.\n * 2017-02-08   v2.1.0   Show size changes in output. Switch to `object.assign`.\n * 2016-07-19   v2.0.0   Update uglify-js to v2.7.0. `screwIE8` is enabled by default.\n * 2016-07-19   v1.0.2   Update grunt to ^1.0.0. Fix `beautify` when passed as an object. Fix docs about `report` values.\n * 2016-03-16   v1.0.1   Downgrade maxmin for Node.js 0.10.\n * 2016-03-04   v1.0.0   Use uglify-js ~2.6.2 to fix sourcemap issue. Improve docs for `global-defs` and `--define` options. Add `sourceMapUrl` option. Add `bare_returns` option. Optionally set report verbosity level using report option.\n * 2016-01-29   v0.11.1   Update lodash to ^4.0.1. Update grunt-contrib-clean to ^0.7.0. Update grunt-contrib-jshint to ^0.12.0.\n * 2015-11-20   v0.11.0   Update uglify-js to ~2.6.0.\n * 2015-11-12   v0.10.1   Update uglify-js to ~2.5.\n * 2015-10-27   v0.10.0   Update uglify-js to ^2.5.\n * 2015-08-24   v0.9.2   Update uglify-js to ^2.4.24\n * 2015-04-07   v0.9.1   More fixes for `mangle` options.\n * 2015-04-07   v0.9.0   Add hook into uglify-js's mangling functionality.\n * 2015-03-30   v0.8.1   Lock uglify-js to 2.4.17 due to breaking changes.\n * 2015-02-19   v0.8.0   Add `screwIE8` option. Fix issue with explicit `compress` in Node.js 0.12.0.\n * 2014-12-23   v0.7.0   Add `sourceMapRoot` options. Update readme descriptions. Remove reference to clean-css.\n * 2014-09-17   v0.6.0   Output fixes. Add `ASCIIOnly` option. Other fixes.\n * 2014-07-25   v0.5.1   Update chalk to ^0.5.1. Output updates.\n * 2014-03-01   v0.4.0   Remove grunt-lib-contrib dependency and add more colors.\n * 2014-02-27   v0.3.3   Remove unnecessary calls to `grunt.template.process`.\n * 2014-01-22   v0.3.2   Fix handling of `sourceMapIncludeSources` option.\n * 2014-01-20   v0.3.1   Fix relative path issue in sourcemaps.\n * 2014-01-16   v0.3.0   Refactor sourcemap support.\n * 2013-11-09   v0.2.7   Prepend banner if `sourceMap` option not set, addresses #109.\n * 2013-11-08   v0.2.6   Merge #45, #53, #85 (#105 by way of duping #53). Add support for banners in uglified files with sourcemaps. Update docs.\n * 2013-10-28   v0.2.5   Add warning for banners when using sourcemaps.\n * 2013-09-02   v0.2.4   Update sourcemap format via #83.\n * 2013-06-10   v0.2.3   Add `footer` option.\n * 2013-05-31   v0.2.2   Revert #56 due to #58 until [chrome/239660](https://code.google.com/p/chromium/issues/detail?id=239660\u0026q=sourcemappingurl\u0026colspec=ID%20Pri%20M%20Iteration%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified) [firefox/870361](https://bugzilla.mozilla.org/show_bug.cgi?id=870361) drop.\n * 2013-05-22   v0.2.1   Update uglify-js to ~2.3.5 #55 #40. Change `sourcemappingUrl` syntax #56. Disable sorting of names for consistent mangling #44. Update docs for `sourceMapRoot` #47 #25.\n * 2013-03-14   v0.2.0   No longer report gzip results by default. Support `report` option.\n * 2013-01-30   v0.1.2   Add better error reporting. Support for dynamic names of multiple sourcemaps.\n * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0.\n * 2013-01-18   v0.1.1rc6   Update grunt/gruntplugin dependencies to rc6. Change in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-09   v0.1.1rc5   Update to work with grunt v0.4.0rc5. Switch back to `this.files` API.\n * 2012-11-28   v0.1.0   Work in progress, not officially released yet.\n\n---\n\nTask submitted by [\"Cowboy\" Ben Alman](http://benalman.com)\n\n*This file was generated on Fri Apr 15 2022 21:00:08.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruntjs%2Fgrunt-contrib-uglify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgruntjs%2Fgrunt-contrib-uglify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruntjs%2Fgrunt-contrib-uglify/lists"}