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

electrode-archetype-react-app-sync

v1.6.0

Published

Electrode NodeJS/React Universal Application Archetype

Downloads

8

Readme

Archetype: Electrode React ~~Isomorphic~~ Universal App

NPM version Build Status Dependency Status

A Walmart Labs flavored React Universal App archetype.

tl;dr

What is this for?

This "app archetype" provides for common patterns across all app projects so that each app project can standardize on common development behavior and patterns. Its essentially pre-made patterns for build scripts.

How do I start developing in my application project after installing?

# This runs both the node server and webpack (in hot mode)
$ gulp hot

# Also try `dev` mode when running off battery power and you wish to maximize battery life.
$ gulp dev

What is hot mode?

Hot mode enables Hot module reloading(HMR), it is where webpack transpiles your javascript and css code and continues to watch for any changes, and, builds and loads only the code that has changed on disk. It allows you to develop without re-loading your browser page as the changes will be automagically piped in.

How do I run my application tests?

# This will run test eslint and your spec tests
$ gulp check

How do I run my application tests without going through eslint (i.e., while I'm developing)?

# This will run only your spec tests
$ gulp test-dev

Why can't my test and code changes get automatically run with the tests? Why do the tests take so long to start?

# This will start a webpack-dev-server to hot watch your code and also start a karma test browser that auto-reruns when specs or client code changes.
$ gulp test-watch-all

How do I use and/or view the final build files without minifying/uglifying but also with sourcemaps?

# This will build your code and save to disk, and then start a node server (without using webpack-dev-server).
$ gulp dev-static

Is there anything else that might be nice for my development?

# This will start the node server in debug mode so that you can place breakpoints, "debugger" statements, or use `node-inspector`.
$ gulp debug

How do I view my test result in the browser?

Run either of the below commands before opening the link.

gulp server-test
gulp dev # (OR) (which includes `server-test`)
gulp hot # (OR) (which includes `server-test`)

This will serve the static assets for test.html

open test.html to view test result.

How do I generate a manifest.json and a service-worker file?

First we need to add a sw-config.js file under the app's config folder.

This file contains two sections:

1. Manifest
manifest: {
logo: "./images/icon.png",
title: "Electrode Progressive App",
short_name: "EPA",
start_url: "/"
}

Manifest gives you control over how your web app is installed on user's home screen with short_name, title and logo properties. You can also specify a starting path to launch your app with start_url property. Manifest defines how your app appears to the user and more importantly how they can launch it.

2. Cache
cache: {
  runtimeCaching: [{
    handler: "fastest",
    urlPattern: /\/home$/
  }, {
    handler: "networkFirst",
    urlPattern: /getBeer/
  }],
  staticFileGlobs: ['dist/**/*']
}

Seamlessly cache your static assets or run time routes or cache them together! Precache your static assets generated by webpack using the staticFileGlobs property. Or use the runtimeCaching property to cache specific react routes in from your routes.jsx.

Once this file is added, running

gulp build

will generate a manifest.json file inside of dist/js/icons-[hash] and a service worker file dist/sw.js.

Service Worker file is generated during the build step and it will precache all the static resources as per the configuration in sw-config.js. Using AboveTheFoldOnlyServerRender you can avoid caching of certain components inside the crucial pages of your app to make your App shell even lighter.

<AboveTheFoldOnlyServerRender skip={true}>
  <div>
    this will not be a part of your app shell
  </div>
</AboveTheFoldOnlyServerRender>

AboveTheFoldOnlyServerRender example Sample config.js More on PWA

Installation

We use [gulp] as a task invoker. You should install it globally.

$ sudo npm install -g gulp
run the following in your project
$ npm install --save-dev gulp electrode-archetype-react-app electrode-archetype-react-app-dev
Add a gulpfile.js

The gulpfile.js should contain the following and be located in the root of your project

require("electrode-archetype-react-app")();
Add a .babelrc to your project

The .babelrc needs to extend the archetype's babel configuration in order to apply the presents (ES2015, React) and the plugins like i18n. If your project needs additional Babel settings (like using stage 0 features) you can add them to this file. See the Babel docs for more information.

{
  "extends": "./node_modules/electrode-archetype-react-app/config/babel/.babelrc"
}
Use babel-core/register in your server entry point

If you don't have a build step for your server code, then you must transpile on the fly using babel-register. For performance reasons, we recommend whitelisting the react module to be transpiled as well, so that the transform-node-env-inline plugin gets applied to the React codebase:

require("babel-core/register")({
  ignore: /node_modules\/(?!react\/)/
});
Use the cssModuleHook in your server entry point for isomorphic CSS modules

If you want to enable isomorphic css modules, the server needs to know how to import css files and generate unique class names. The archetype can handle this for you using the supports module. In your server entry point:

var supports = require("electrode-archetype-react-app/supports");

supports.cssModuleHook();
Define client entry points

By default, the archetype uses client/app.js or client/app.jsx as a client entry point. Alternatively, you can define multiple entry points for your application, so the Webpack will create bundles for each app entry point. To do that, place entry.config.js module into your app's client directory:

Here is an example of entry.config.js:

module.exports = {
  "web": "./app-web.js",
  "ios": "./app-ios.js",
  "android": "./app-android.js"
};

Tasks

Run gulp to see list of tasks.

Built with :heart: by Team Electrode @WalmartLabs.