{"id":42822,"library":"grunt-mailru-frontend","title":"grunt-mailru-frontend","description":"A Grunt.js multi-task that minifies CSS and JS files with intelligent caching. It uses UglifyJS for JavaScript and CSSO (by Yandex) for CSS, with automatic @import inlining and url() rewriting. The key differentiator is its .build-catalog.json catalog that stores file checksums and last compilation dates, skipping re-minification of unchanged files to save CPU time and preserve modification timestamps. Version 0.0.3 is the latest release, with no recent updates. This plugin also supports versioned URL rewriting for effective cache busting.","status":"abandoned","version":"0.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/teux/grunt-frontend","tags":["javascript","gruntplugin","frontend","front-end","css","js"],"install":[{"cmd":"npm install grunt-mailru-frontend","lang":"bash","label":"npm"},{"cmd":"yarn add grunt-mailru-frontend","lang":"bash","label":"yarn"},{"cmd":"pnpm add grunt-mailru-frontend","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Grunt.js plugin, requires Grunt to run","package":"grunt","optional":false}],"imports":[{"note":"Registers the plugin tasks (frontend-js, frontend-css, frontend-index) via Grunt's loadNpmTasks.","wrong":"require('grunt-mailru-frontend')","symbol":"frontend-js","correct":"grunt.loadNpmTasks('grunt-mailru-frontend')"},{"note":"Tasks are registered globally; no direct import needed.","wrong":"const frontendCss = require('grunt-mailru-frontend')","symbol":"frontend-css","correct":"grunt.loadNpmTasks('grunt-mailru-frontend')"},{"note":"The plugin auto-registers tasks via npm task loading.","wrong":"require('grunt-mailru-frontend').registerTasks(grunt)","symbol":"frontend-index","correct":"grunt.loadNpmTasks('grunt-mailru-frontend')"}],"quickstart":{"code":"module.exports = function(grunt) {\n  grunt.initConfig({\n    'frontend-js': {\n      main: {\n        options: {\n          minify: true\n        },\n        files: {\n          'out/js/bundle.js': ['src/js/*.js']\n        }\n      }\n    },\n    'frontend-css': {\n      main: {\n        options: {\n          inline: true,\n          rewriteUrl: true,\n          minify: true\n        },\n        files: [{\n          src: 'src/css/*.css',\n          dest: 'out/css'\n        }]\n      }\n    },\n    frontend: {\n      srcWebroot: './src',\n      webroot: './out',\n      rewriteScheme: '/-/<%= version %><%= url %>'\n    }\n  });\n  grunt.loadNpmTasks('grunt-mailru-frontend');\n};","lang":"javascript","description":"Shows basic Gruntfile configuration for JS and CSS minification tasks using grunt-mailru-frontend."},"warnings":[{"fix":"Use modern alternatives like grunt-contrib-uglify and grunt-contrib-cssmin, or migrate to other build tools.","message":"Package is unmaintained and only supports Grunt 0.x, not Grunt 1.x.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Set 'targetdir' explicitly to the desired catalog location or use 'onlyCatalog: true' to generate catalog only.","message":"The catalog file (.build-catalog.json) is created in the 'targetdir' option, not in the output directory by default.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use 'frontend' instead of 'frontent' in Gruntfile config.","message":"Typo in global config key: 'frontent' (missing 'd') in example.","severity":"breaking","affected_versions":"0.0.3"},{"fix":"Set 'srcWebroot' to the root of your source files to resolve absolute paths.","message":"CSS @import inlining with 'inline: true' may break if imports use absolute paths without 'srcWebroot' set correctly.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use a dedicated JS minifier plugin or tool that supports ES6+.","message":"UglifyJS version bundled is outdated; no support for modern JS features like ES6+.","severity":"deprecated","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.0.3':68 'also':79 'automat':31 'build-catalog.json':42 'bust':87 'cach':18,86 'catalog':43 'checksum':47 'compil':50 'cpu':61 'css':12,29,94 'csso':25 'date':51 'differenti':39 'effect':85 'end':93 'file':15,46,58 'front':92 'front-end':91 'frontend':4,90 'grunt':2 'grunt-mailru-frontend':1 'grunt.js':6 'gruntplugin':89 'import':32 'inlin':33 'intellig':17 'javascript':23,88 'js':14,95 'key':38 'last':49 'latest':71 'mailru':3 'minif':55 'minifi':11 'modif':65 'multi':8 'multi-task':7 'plugin':78 'preserv':64 're':54 're-minif':53 'recent':75 'releas':72 'rewrit':36,83 'save':60 'skip':52 'store':45 'support':80 'task':9 'time':62 'timestamp':66 'uglifyj':21 'unchang':57 'updat':76 'url':35,82 'use':20 'version':67,81 'yandex':27","created_at":"2026-06-05T16:56:50.582055+00:00","updated_at":"2026-06-05T16:56:50.582055+00:00","problems":[{"fix":"Add 'grunt.loadNpmTasks('grunt-mailru-frontend');' in your Gruntfile.","cause":"Plugin not registered via grunt.loadNpmTasks.","error":"Fatal error: Unable to find task 'frontend-js'."},{"fix":"Ensure you have a 'frontend' config object (not 'frontent' or other).","cause":"Global config key 'frontend' is misspelled or missing.","error":"TypeError: Cannot read property 'force' of undefined"},{"fix":"Check file paths in the 'files' configuration; use absolute paths or adjust srcWebroot.","cause":"Source files not found or glob pattern incorrect.","error":"Warning: Task 'frontend-js:main' failed. No files created."}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/teux/grunt-frontend","github":"https://github.com/teux/grunt-frontend","docs":null,"changelog":null,"pypi":null,"npm":"grunt-mailru-frontend","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}