Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
electrode-archetype-react-app-ar
Advanced tools
Electrode NodeJS/React Universal Application Archetype
This repo has been moved here
A Walmart Labs flavored React Universal App archetype.
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.
# 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
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.
# This will run test eslint and your spec tests
$ gulp check
# This will run only your spec tests
$ gulp test-dev
# 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
# This will build your code and save to disk, and then start a node server (without using webpack-dev-server).
$ gulp dev-static
# This will start the node server in debug mode so that you can place breakpoints, "debugger" statements, or use `node-inspector`.
$ gulp debug
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.
First we need to add a sw-config.js
file under the app's config
folder.
This file contains two sections:
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.
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
We use [gulp] as a task invoker. You should install it globally.
$ sudo npm install -g gulp
$ npm install --save-dev gulp electrode-archetype-react-app electrode-archetype-react-app-dev
gulpfile.js
The gulpfile.js
should contain the following and be located in the root of your project
require("electrode-archetype-react-app")();
.babelrc
to your projectThe .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"
}
babel-core/register
in your server entry pointIf 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\/)/
});
cssModuleHook
in your server entry point for isomorphic CSS modulesIf 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();
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"
};
Run gulp
to see list of tasks.
Built with :heart: by Team Electrode @WalmartLabs.
FAQs
Electrode NodeJS/React Universal Application Archetype
The npm package electrode-archetype-react-app-ar receives a total of 2 weekly downloads. As such, electrode-archetype-react-app-ar popularity was classified as not popular.
We found that electrode-archetype-react-app-ar demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.