Oh, I see! I was confused. I now recall seeing that you were working on
getting FlexJS into NPM.

I thought you meant that you were working on the compiler to add support
for Node.js modules. Getting the compiler to output good code for running
on Node.js is something that I hope to work on soon.

For those not familiar, Node.js modules are referenced with calls to
require(), like this:

var fs = require("fs");

It's almost like an import in ActionScript. I'm hoping to get the emitter
to output the right require() calls for any classes that are from CommonJS
modules used by Node.js. That's why I mentioned metadata.

As far as NPM goes, let me share something that I learned while working on
my dts2as utility. If you want someone to be able to use commands like
asjsc directly from the command line, they need to install the package
globally. It won't work for packages installed locally.

npm install -g flexjs
asjsc src/HelloWorld.as

Okay, technically, you can run commands from local packages. It's just a
little messy, so I think people avoid it:

npm install -g flexjs
./node_modules/.bin/asjsc src/HelloWorld.as

To get asjsc and other commands to work, you should be able to add them to
package.json. Here's how I did it in dts2as:

"bin": {
  "dts2as": "./bin/dts2as"
}

For FlexJS, I think something like this should work:

"bin": {
  "asjsc": "./js/bin/asjsc",
  "asjscompc": "./js/bin/asjscompc"
}

- Josh

On Tue, Dec 1, 2015 at 4:29 PM, OmPrakash Muppirala <bigosma...@gmail.com>
wrote:

> My first goal is to mimic the Installer to get all the required
> dependencies (AIR, FlashPlayerGlobal.swc, Falcon, Google Closure etc.)  The
> problem here is that except for Google Closure, nothing else is available
> as a require dependency from npm.  And Adobe AIR and Adobe
> FlashPlayerGlobal.swc need license agreement gates before downloading.
>
> So, I am creating a custon node.js module which calls
> download_dependencies.js in the prepublish lifecycle stage file which takes
> care of prompting the user,  downloading, unzipping and copying files into
> place.  So far so good.
>
> The next step would be to register mxmlc, compc, asjsc, etc. with npm (in
> package.json) and be able to call it from the command line.
>
> For the end user, it would be as simple as:
>
> npm install flexjs
> asjac src/HellowWorld.as
>
> I have been committing my changes to the feature-npm-install branch of the
> flex-utilities repo:
>
> https://github.com/apache/flex-utilities/tree/feature-npm-install/npm-flexjs
>
> Right now, I am working on getting the Falcon dependencies working (there
> are about a dozen of them)
>
> If there is a better way to do all this, I would love to hear it :-)
>
> Thanks,
> Om
>
> On Tue, Dec 1, 2015 at 4:12 PM, Josh Tynjala <joshtynj...@gmail.com>
> wrote:
>
> > I saw Om mention Node.js support in another thread.
> >
> > On Tue, Dec 1, 2015 at 3:38 PM, OmPrakash Muppirala <
> bigosma...@gmail.com>
> > wrote:
> >
> > > Right now, I am working on node.js support for FlexJS.
> >
> >
> > It's something that I'm very interested in, and I planned to work on this
> > too, once I found some time. Om, can you go into more detail about how
> > you're planning to implement things? I was personally thinking that
> > metadata might be needed to define what should be passed to require() for
> > modules, but I'd love to hear if you have something else in mind, and
> maybe
> > provide you with some additional feedback.
> >
> > - Josh
> >
>

Reply via email to