2.0.0 • Published 3 years ago

extjs-parser v2.0.0

Weekly downloads
2
License
ISC
Repository
-
Last release
3 years ago

Ext.js framework parser for extjs-loader

The extjs-parser interprets the specified Ext framework directory and generates a map file of class names and requires. The one and only purpose of this library is to scan and parse ExtJS framework or package and generate a dependency tree with a classname-to-sourcefile mapping.

Gotchas

Unfortunately ExtJS and DeftJS using some non-standard JSON files, which breaks webpack and standard node requires, because comments are NOT allowed in JSON. It is a shame, but we have to live with it, so you must prepare your sources with something like this:

npm install strip-json-comments
find . -name package.json -exec sh -c 'echo "$(strip-json-comments {})" > {}' \;

Do not just copy-paste this command, watch out for pwd or this can hurt!

Install

npm install --save extjs-parser

Test

Run tests with

npm test 

Example

var extParser = require('./');
var parser = new extParser({
    path: '~/dev/ext-sdk-6.2.1',
    toolkit: 'modern',
    namespace: 'Ext',
    packages: ['core', 'deft','charts']
});
parser.ready().then(() => {
    console.log('Source file: ', parser.query('Ext.Boot').src);
});

This should print you:

Source file: /Users/steveetm/dev/ext-sdk-6.2.1/packages/core/src/Boot.js

Wildcard

You can also use wildcard at the end of the query.

Good

Ext.util.*

Bad

Ext.*.Panel

Via webpack config (recommended)

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.js/,
        use: [ 
            {
                loader: 'extjs-loader',
                debug: true,
                nameSpace: 'MyApp',
                paths: {
                    'Deft': false,
                    'Ext.ux': 'utils/ux',
                    'Ext': {
                        use: 'ext-parser',
                        options: {
                            path: '~/ext-sdk-6.2.1',
                            toolkit: 'modern',
                            namespace: 'Ext',
                            aliasForNs: ['Deft'],
                            packages: ['core', 'deft', 'google', 'charts']
                        }
                    },
                    'Override': 'app/overrides',
                    'MyApp': 'app'
                }
            } ]
      }
    ]
  }
}

Options

path

Path to the ExtJS framework. Currently you have to use 6.2+

toolkit

Which toolkit to use, modern or classic. Universal is not supported.

namespace

Just specify Ext. Will be removed.

aliasForNs

A bit hacky way to tell the loader to resolve different NS than Ext with this parser. If you are going to use deft as sencha package, you must define ['Deft'] for this.

packages

What packages to add as optional dependency. They won't be included as long as you don't use them in Ext.require or similar way.

2.0.0

3 years ago

1.1.1

5 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago