npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@coon-js/delorean

v0.3.4

Published

ECMAScript transpilation layer for Sencha CMD / Ext JS.

Downloads

425

Readme

delorean

ECMAScript transpilation layer for Sencha CMD / Ext JS.

Allows for using modern ECMAScript in your source code. Will transpile to ES versions Sencha CMD and its baked in Closure Compiler understands.

Makes it possible to use

  • the nullish coalescing operator
  • the optional chaining operator
  • destructuring assignment syntax

without breaking builds created with Sencha CMD:

const foo = null ?? "default string";

const fn = ([x, y, z]) => ({x, y, z});

const adventurer = {
    name: "Alice",
    cat: {
        name: "Dinah"
    }
};

const dogName = adventurer.dog?.name;

Installation

Install @coon-js/delorean with

$ npm i --save-dev @coon-js/delorean

How it works

@coon-js/delorean is an npm tool that provides an additional transpilation layer on top of Sencha CMD with the help of Babel.

For making this work, delorean alters the project file of the package or application and redirects source-roots to the files that were processed and transpiled by Babel. This allows for using any JavaScript language feature in the project code (even class syntax is now possible): With the default configuration of delorean, it will end up as ES5 code.

There is a detailed blog post available that explains the motivation, the purpose and the internal functionality of this tool for further reference.

Usage

$ npx delorean 

will show the help-screen of delorean.

Run

$ npx delorean -p

This will add a .babelrc and a .deloreanrc.json to the root-directory of the package that is using @coon-js/delorean.

Transpiled source files will be available in the .deloreanbuild-folder found in the project's root. Your app.json / package.json will contain updated information regarding source folders (e.g. classpath, see configuration), which will now point to `.deloreanbuild:

  "classpath": [
-            "${package.dir}/src",
-            "${package.dir}/${toolkit.name}/src"
+            "${package.dir}/.deloreanbuild/src",
+            "${package.dir}/.deloreanbuild/${toolkit.name}/src"
         ],
         "overrides": [
-            "${package.dir}/overrides",
-            "${package.dir}/${toolkit.name}/overrides"
+            "${package.dir}/.deloreanbuild/overrides",
+            "${package.dir}/.deloreanbuild/${toolkit.name}/overrides"
         ],

Subsequent Sencha CMD build processes will consume the transpiled sources found in this directory.

$ npx delorean -r

will revert the changes made to the app.json / package.json:

  "classpath": [
      "${package.dir}/src",
      "${package.dir}/${toolkit.name}/src"
  ],
  "overrides": [
      "${package.dir}/overrides",
      "${package.dir}/${toolkit.name}/overrides"
  ]

Command Line Options

--config, -c

Path to the config file to use, defaults to ./.deloreanrc.json

--dir, -d

Target directory relative to the directory where delorean was invoked, and where the Sencha Ext JS App/the Package is located. Defaults to ./

--prepare, -p

Prepares the .deloreanbuild folder, adds transpiled sources to it and update the project file so that particular entries point to this folder as the sources root (see configuration).

--revert, -r

Reverts the changes made to the configuration files.

--sanitize, -s

Sanitizes JSON and allows for reading in files that contain comments. Warning: This will produce valid JSON for write-operations, so existing comments will get lost on the way.

--help, -h

Show the help screen.

Configuration

.deloreanrc.json

The configuration file required by delorean. Contains options for setting JSON-keys available with Sencha's Ext JS package.json / app.json that should be used for determining the JavaScript-source files for transpiling.

{
    "map" : [
      "sencha.classpath",
      "sencha.overrides",
      "classpath",
      "overrides"
    ],
    "toolkits": [
      "modern", "classic"
    ],
    "builds": [
      "desktop", "shared"
    ],
    "externals": [
      "./node_modules/@lib/externalpackage",
      "./packages/local/math"
    ]
}

map

  • Type: Array

Holds all the JSON-keys that should be considered when collecting source-directories for transpiling. Values containing template-strings will be properly considered, such as

  • ${package.dir}/src
  • ${toolkit.name}/src
  • app/${build.id}/overrides

toolkits

  • Type: Array

Holds the values that should be used when evaluating strings containing templates, such as ${toolkit.name}/src. With toolkits set to ["modern", "classic"], the directories modern/src and classic/src will be considered when collecting source files for transpiling.

builds

  • Type: Array

Holds the values that should be used when evaluating strings containing templates, such as app/${build.id}/overrides. With builds set to ["desktop", "shared"], the directories app/desktop/overrides and app/shared/overrides will be considered when collecting source files for transpiling.

externals

  • Type: Array

Paths to external packages that should be processed with this run of delorean. This is useful if you have a project consisting of additional external Ext JS packages that require transpilation before they are merged in a build. Please note, that the external packages need to have delorean installed and configured.

.babelrc

The configuration file required by Babel The .babelrc is the configuration file for Babel and has default options known to work with Sencha Ext JS projects >= 7.4. Adjust to your needs. See the documentation for an exhaustive list of configuration options.

CI/CD Integration

The two commands are easily integrated with CI/CD pipelines commonly used with Sencha Ext JS projects. You can automate transpiling by configuring either the build.xml of a Sencha package or a Sencha app, or by adding additional scripts to the package.json.

build.xml

This file is available with any package or app that is created with Sencha Ext JS. It provides a place for adding options and hooks for the Ant tool used with Sencha CMD and allows for configuring -before-build /-after-build targets (amongst others). You can make use of delorean by configuring the targets like so:

<target name="-before-build">
    <exec executable="cmd">
        <arg line="/c npx delorean -p"/>
    </exec>
</target>

<target name="-after-build">
    <exec executable="cmd">
        <arg line="/c npx delorean -r"/>
    </exec>
</target>

This will run npx delorean -p before Sencha CMD builds the project, and revert all project specific changes once the build completes by invoking npx delorean -r.

package.json

If you already have a build script in your package.json that calls Sencha CMD, wrap the build command with calls to delorean. Here’s an example:

{
  "scripts": [
    "build": "npx delorean -p && npm run senchabuild && npx delorean -r",
    "senchabuild": "npm run clean && cross-env webpack --env.profile=desktop --env.environment=production --env.treeshake=yes --env.cmdopts=--uses"
  ]
}