izymodtask

5.0.2 • Public • Published

izymodtask

Node.js modtask component for Izyware.

INSTALLATION

If you are using npm (the Node.js package manager) always ensure that your npm is up-to-date by running:

npm update -g npm

Then use:

npm install izymodtask

USING THE TOOL

This tool provides libraries for traditional modtask izyware apps. You may use the libraries by referencing the node_modules folder.

When integrating izyware modtask style components to native node runtime apps and you need to ldmod on a module, you can:


var mod = require('izymodtask').getRootModule().ldmod('path_to_module');

To see what the module resolution paths are for the context that you are using the code above, you can always use:


require('izymodtask').getRootModule().ldmod('s_root').cmdlineverbs.sysview();

If you need to launch cmdline based verbs from the node app, use the following syntax:


require('izymodtask').runCmd('sysview -- or your verb --')

When the verb is called inside the g_handler module, you can extract the command line config by:


modtask.cmdlineverbs.method = function() {
   var config = modtask.ldmod('izymodtask/index').extractConfigFromCmdLine('method');
	 ...

You can customize the izyware modtask search path by creating the following:


modtask/config/kernel/extstores/file.js

in the root of your node app.

Path Resolution Use Cases for kernel/extstores/file

Note: Current Directory = CD, IzyModtask Directory = ID, Thirdparty Components Directory = TD

Consider the following setup

CD = /tmp/curdir
ID = /plat/p/izymodtask
TD = /tmp/izymodtaskapp

node TD/test.js

rm -rf /tmp/izymodtaskpathtest;
mkdir -p /tmp/izymodtaskpathtest/curdir;
mkdir -p /tmp/izymodtaskpathtest/app;
mkdir -p /tmp/izymodtaskpathtest/thirdpartylib;

clear; cp -r /plat/p/izymodtask/izymodtaskpathtest/* /tmp/izymodtaskpathtest;cd /tmp/izymodtaskpathtest/curdir;node ../app/main.js

This is very a typical use case where a thirdparty app that uses izymodtask, is launched from a random location in the system. We will analyze the following scenarios:

1: getRootModule().ldmod('rel:appdep')

In this case, rel:... is relative to the rootModule which can vary depending on the platform (i.e. circus front-end will be bootstrap/version/., nodejs modtask will be izymodtask/.).

That is the reason why __contextualName was introduced in the later version to be able to 'position' the rootModule.

2: getRootModule().ldmod('./appdep')

should be the same as rel:appdep

3: getRootModule().ldmod('/appdep')

This will first use the absolute path to locate and load the module. If not found, then it will remove the begining slash and treat it as number 4 below. The fall back is crucial when reference packageless modules from chains, i.e.

['chain.importProcessor', ':test/assert/chain'],

4: getRootModule().ldmod('appdep')

will search using the iteratePathsToSearch and external resolver rules

NOTE

for more details, visit https://izyware.com

Change Log

V5

  • implement support for code based module search path definition

    • Kernel.rootModule.usermodule.getModuleSearchPaths was added
    • rootModule can now take an array
    • this will make the modtask/... kernel/extstores/file optional and allow more flexibility in reusing existing modules in different contexts
  • implement _modToPkgMap for kernel/path.toInvokeString

  • implement expandStringEncodedConfigValues to allow passing complex JSON objects at commandline

  • add stacktrace to module load errors

  • added module loader customization feature

    • prior to this 'require' relative paths were broken and all requires would have to have used absolute paths.

    • add this to your module:

        /* izy-loadobject nodejs-require */
        ...
        module.exports = modtask;
      
  • add a simple file look up for modnames that with '/' first before falling back to iteratePathsToSearch.

  • add the __contextualName feature modules to allow customization of rel:.. path resolution

    • otherwise ldmod('rel:modname') or ldmod('./modname') would not work
  • improve verbosity control

  • fixed izymodtask so that it does not eval ljs in index.js.

  • full payload customization and manual build for customized solutions.

      ./ldo.sh mship izymodtask/build;cp ../__build/payloads/build/izymodtask/entrypoint/ljs.js ../izymodtask/ljs.js;
      cp modtask/kernel/mod.js ../izymodtask/kernel;cp modtask/kernel/path.js ../izymodtask/kernel;
    

< V5

  • relrequire is now available
    • it will allow doing node style require using relative paths to the current izy module.
    • this will alleviate the paths and search problems that customers have reported in the past

Package Sidebar

Install

npm i izymodtask

Weekly Downloads

2

Version

5.0.2

License

MIT

Unpacked Size

158 kB

Total Files

35

Last publish

Collaborators

  • alex.wong
  • christoffdimitar
  • evgheniantropov
  • izyware