All Projects → mehdishojaei → Grunt Amdcheck

mehdishojaei / Grunt Amdcheck

Licence: mit
Uses AST to find and remove unused dependencies in AMD modules.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Grunt Amdcheck

Node Dependency Tree
Get the dependency tree of a module
Stars: ✭ 383 (+834.15%)
Mutual labels:  amd, ast
Sql Composer
Standalone SQL composer DSL for Ruby
Stars: ✭ 26 (-36.59%)
Mutual labels:  ast
Inventory Hunter
⚡️ Get notified as soon as your next CPU, GPU, or game console is in stock
Stars: ✭ 778 (+1797.56%)
Mutual labels:  amd
Metric Parser
📜 AST-based advanced mathematical parser written by Typescript.
Stars: ✭ 26 (-36.59%)
Mutual labels:  ast
Pyopencl
OpenCL integration for Python, plus shiny features
Stars: ✭ 790 (+1826.83%)
Mutual labels:  amd
Vscode Tsquery
TSQuery extension for Visual Studio Code
Stars: ✭ 13 (-68.29%)
Mutual labels:  ast
Astring
🌳 Tiny and fast JavaScript code generator from an ESTree-compliant AST.
Stars: ✭ 757 (+1746.34%)
Mutual labels:  ast
Hackintosh Asus X570 Prime Plus 3700x
Hackintosh bootloader configuration with OpenCore.
Stars: ✭ 38 (-7.32%)
Mutual labels:  amd
Hive sql ast
利用Druid SQL Parser解析HiveSQL日志,自动构建字段级别的血缘关系及主外键的自动抽取
Stars: ✭ 20 (-51.22%)
Mutual labels:  ast
Modiscript
Acche din aa gaye
Stars: ✭ 888 (+2065.85%)
Mutual labels:  ast
Proposal Binary Ast
Binary AST proposal for ECMAScript
Stars: ✭ 831 (+1926.83%)
Mutual labels:  ast
Micromark
the smallest commonmark compliant markdown parser that exists; new basis for @unifiedjs (hundreds of projects w/ billions of downloads for dealing w/ content)
Stars: ✭ 793 (+1834.15%)
Mutual labels:  ast
Laravel Image Optimizer
Optimize images in your Laravel app
Stars: ✭ 873 (+2029.27%)
Mutual labels:  optimize
Php Parser
PHP parser written in Go
Stars: ✭ 787 (+1819.51%)
Mutual labels:  ast
Pyc Cfg
Pyc-cfg is a pure python control flow graph builder for almost all Ansi C programming language.
Stars: ✭ 29 (-29.27%)
Mutual labels:  ast
Tslib
Runtime library for TypeScript helpers.
Stars: ✭ 762 (+1758.54%)
Mutual labels:  optimize
Esl
enterprise standard loader
Stars: ✭ 821 (+1902.44%)
Mutual labels:  amd
Esdispatch
trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST
Stars: ✭ 9 (-78.05%)
Mutual labels:  ast
Cppast
Library to parse and work with the C++ AST
Stars: ✭ 1,003 (+2346.34%)
Mutual labels:  ast
Purge Wrangler
AMD & NVIDIA eGPUs for all Thunderbolt Macs.
Stars: ✭ 960 (+2241.46%)
Mutual labels:  amd

grunt-amdcheck Known Vulnerabilities

Uses AST to find and remove unused dependencies in AMD modules.

Getting Started

This plugin requires Grunt ~0.4.0

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-amdcheck --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-amdcheck');

The "amdcheck" task

Overview

When an AMD-based project grows, so does the number of its JS files. Some dependencies of previously used modules may no longer be necessary. The AMD module loader (e.g. requirejs) loads those useless dependencies from the network, which can increase initial page load time. This grunt plugin can detect and remove those useless dependencies without modifying source files.

example

source.js

define('module1', ['p1', 'p2'], function (a, b) {
  return a;
});

define('module2', ['p1', 'p2', 'p3'], function (a, b, c) {
  return b;
});

optimized-source.js

define('module1', ['p1'], function (a) {
  return a;
});

define('module2', ['p2'], function (b) {
  return b;
});

Options

excepts

Type: Array
Default value: []

An array of strings or RegExps that represent dependency names that should not be taken into account.

exceptsPaths

Type: Array
Default value: []

An array of strings or RegExps that represent dependency paths that should not be taken into account.

NOTE: exceptsPaths, followed by a comma-separated list of module paths can be declared before each module definition. This exception is only applied to the underlying module definition.

source.js

/* exceptsPaths: p3 */
define(['p1', 'p2', 'p3'], function (a, b, c) {
  return b;
});

optimized-source.js

/* exceptsPaths: p3 */
define(['p2', 'p3'], function (b, c) {
  return b;
});

strict

Type: boolean
Default value: false

When strict is true, throws an error if at least one unused dependency path or dependency name was found.

logModuleId

Type: boolean
Default value: false

Logs the id of the module if the module id is specified.

logDependencyPaths

Type: boolean
Default value: false

Logs the list of dependency paths of the module.

logDependencyNames

Type: boolean
Default value: false

Logs the list of dependency names of the module.

logUnusedDependencyPaths

Type: boolean
Default value: true

Logs the list of unused dependency paths of the module.

logUnusedDependencyNames

Type: boolean
Default value: false

Logs the list of unused dependency names of the module.

removeUnusedDependencies

Type: boolean
Default value: true

Removes detected unused dependencies and saves the new files.

saveFilesWithUnusedDependenciesOnly

Type: boolean
Default value: false

When removing unused dependencies (i.e. removeUnusedDependencies: true), only write out files that have unused dependencies.

Usage Examples

grunt.initConfig({
  amdcheck: {
    dev: {
      options: {
        excepts: ['module'],
        exceptsPaths: ['require', /^jquery\./]
      },
      files: [
        {
          expand: true,
          cwd: 'js/',
          src: ['**/*.js'],
          dest: 'build/'
        }
      ]
    }
  }
});

Release History

  • 2016-04-13   v1.3.2   Update grunt peerDep.
  • 2015-05-13   v1.3.1   Option 'strict' added.
  • 2015-05-12   v1.3.0   Option 'logFilePath' removed (only filepaths with unused deps will be logged).
  • 2014-08-22   v1.2.5   Fix a bug when there are comments between paths and dependencies.
  • 2014-08-16   v1.2.0   Entirely uses AST.
  • 2014-07-20   v1.0.0   Uses AST to find out unused dependencies.
  • 2014-04-21   v0.3.0   Added option to only write out files that have unused dependencies.
  • 2014-03-19   v0.2.2   Update the dependency version.
  • 2014-01-22   v0.2.1   exceptsPaths can also be defined before each module definition.
  • 2014-01-13   v0.2.0   Extracted the core as a separate package (amdextract).
  • 2014-01-12   v0.1.7   Bug fix on commented dependencies. Add the new exceptsPaths option. Options excepts and exceptsPaths can take RegExps.
  • 2014-01-11   v0.1.6   Bug fix on commented dependencies.
  • 2014-01-05   v0.1.5   Can remove unused dependencies. Add some logging options.
  • 2014-01-02   v0.1.1   Works on files with multiple modules. Can detect module id if provided.
  • 2014-01-01   v0.1.0   Works on files with a single module.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].