Giter Club home page Giter Club logo

create-fusion-app's Introduction

Modern framework for fast, powerful React apps

Build status fusion-core Downloads

What is it?

fu·sionnoun

The process or result of joining two or more things together to form a single entity.

Fusion.js, Uber’s open source universal web framework, represents the fusion of the client and the server. It's geared for server-side rendering out of the box, and its plugin-driven architecture allows for complex frontend and backend logic to be encapsulated in a single plugin:

import App from 'fusion-react';
import Router from 'fusion-plugin-react-router';

export default () => {
  const app = new App(<div>...</div>);

  /*
  One line of code sets up everything you need for routing:
  - Server rendering
  - React Providers on both server and browser
  - Bundle splitting integration
  - Hot module reloading support
  */
  app.register(Router);

  return app;
}

We initially built Fusion.js to make our own websites easier to maintain, but were so impressed with the benefits that we decided to offer it to the community as an open source project!

Try it out

If you're interested in giving Fusion.js a shot, Overview and Core Concepts are great places to start.

Contributing

This is a monorepo of all open source Fusion.js packages maintained using Yarn v2. Take a look at CONTRIBUTING.md for info on how to develop in this repo.

License

MIT

create-fusion-app's People

Contributors

alexmsmithca avatar austingreendev avatar brandoncc avatar chrisdothtml avatar jamiemd avatar kevingrandon avatar kevinwolfcr avatar lhorie avatar renovate[bot] avatar rtsao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

create-fusion-app's Issues

Why do component's render methods get executed twice?

Question: I scaffolded a FusionApp using yarn create fusion-app and uber-web scaffold and when I render a component the component's render method gets called twice, why is that?

main.js

// @flow
import App from 'fusion-react';

import root from './root.js';

export default () => {
const app = new App(root);
return app;
};

root.js

// @flow
import React from 'react';
import Home from './pages/home.js';

const root = (
<Home />
);

export default root;

pages/home.js


import React from 'react';

let counter = 0;
const Home = () => {
  console.log(counter++);
  return (
    <h1>hello</h1>
  )
}

export default Home;

I can do the same thing on CRA or Next and it only executes once. Maybe it's ssr?

Scaffolded fusion-app will not build

Current Behavior

After scaffolding a new fusion-app using yarn create, the fusion-app will not build correctly and returns the following error:

$ fusion build
(node:96929) Warning: N-API is an experimental feature and could change at any time.
(node:96929) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
Build completed in 4.82s

Build completed in 4.812s

error: (client) /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/client-entry.js
Module not found: Error: Can't resolve 'fusion-core' in '/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries'
resolve 'fusion-core' in '/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries'
  Parsed request is a module
  using description file: /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/package.json (relative path: ./entries)
    Field 'browser' doesn't contain a valid alias configuration
    Field 'es2015' doesn't contain a valid alias configuration
    Field 'es2017' doesn't contain a valid alias configuration
    resolve as module
      /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/node_modules doesn't exist or is not a directory
      /Users/jasonbarone/.config/yarn/global/node_modules/node_modules doesn't exist or is not a directory
      /Users/jasonbarone/.config/yarn/node_modules doesn't exist or is not a directory
      /Users/jasonbarone/.config/node_modules doesn't exist or is not a directory
      /Users/jasonbarone/node_modules doesn't exist or is not a directory
      /Users/node_modules doesn't exist or is not a directory
      /node_modules doesn't exist or is not a directory
      looking for modules in /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules
        using description file: /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
          Field 'es2015' doesn't contain a valid alias configuration
          Field 'es2017' doesn't contain a valid alias configuration
      looking for modules in /Users/jasonbarone/.config/yarn/global/node_modules
        using description file: /Users/jasonbarone/.config/yarn/global/package.json (relative path: ./node_modules)
          Field 'browser' doesn't contain a valid alias configuration
          Field 'es2015' doesn't contain a valid alias configuration
          Field 'es2017' doesn't contain a valid alias configuration
          using description file: /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/package.json (relative path: ./node_modules/fusion-core)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
          using description file: /Users/jasonbarone/.config/yarn/global/package.json (relative path: ./node_modules/fusion-core)
            no extension
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core doesn't exist
            .wasm
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core doesn't exist
            .wasm
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.wasm doesn't exist
            .mjs
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.wasm doesn't exist
            .mjs
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.mjs doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.mjs doesn't exist
            .js
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.js doesn't exist
            .json
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.js doesn't exist
            .json
              Field 'browser' doesn't contain a valid alias configuration
              Field 'es2015' doesn't contain a valid alias configuration
              Field 'es2017' doesn't contain a valid alias configuration
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.json doesn't exist
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.json doesn't exist
            as directory
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core doesn't exist
            as directory
              /Users/jasonbarone/.config/yarn/global/node_modules/fusion-core doesn't exist
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/node_modules]
[/Users/jasonbarone/.config/yarn/global/node_modules/node_modules]
[/Users/jasonbarone/.config/yarn/node_modules]
[/Users/jasonbarone/.config/node_modules]
[/Users/jasonbarone/node_modules]
[/Users/node_modules]
[/node_modules]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-core]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.wasm]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.wasm]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.mjs]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.mjs]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.js]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.js]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/fusion-core.json]
[/Users/jasonbarone/.config/yarn/global/node_modules/fusion-core.json]
 @ /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/client-entry.js 12:0-61 26:6-18 28:23-39 31:19-35
 @ multi /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/client-public-path.js /Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/entries/client-entry.js
/Users/jasonbarone/.config/yarn/global/node_modules/@gfx/zopfli/dist/libzopfli.js:1
(function (exports, require, module, __filename, __dirname) { var Module=typeof Module!=="undefined"?Module:{};const base64=require("base64-js");const base64EncodedBinary=require("./libzopfli-wasm");var Module={};Module.noInitialRun=true;Module.wasmBinary=base64.toByteArray(base64EncodedBinary);var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENV

Error: Compiler stats included errors.
    at compiler.start (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/commands/build.js:43:30)
    at handler (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/build/compiler.js:152:9)
    at finalCallback (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/MultiCompiler.js:247:12)
    at runWithDependencies.err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/MultiCompiler.js:270:6)
    at done (/Users/jasonbarone/.config/yarn/global/node_modules/neo-async/async.js:2928:13)
    at runCompilers (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/MultiCompiler.js:174:48)
    at err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/MultiCompiler.js:181:7)
    at compiler.run (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/MultiCompiler.js:263:7)
    at finalCallback (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:210:39)
    at hooks.done.callAsync.err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:259:14)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/Users/jasonbarone/.config/yarn/global/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:24:1)
    at AsyncSeriesHook.lazyCompileHook (/Users/jasonbarone/.config/yarn/global/node_modules/tapable/lib/Hook.js:154:20)
    at emitRecords.err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:257:22)
    at Compiler.emitRecords (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:371:39)
    at emitAssets.err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:251:10)
    at hooks.afterEmit.callAsync.err (/Users/jasonbarone/.config/yarn/global/node_modules/fusion-cli/node_modules/webpack/lib/Compiler.js:357:14)

Expected Behavior

Fusion app should build.

Versions

    "fusion-cli": "^1.16.0",
    "fusion-core": "^1.10.3",
    "fusion-plugin-react-helmet-async": "^1.0.2",
    "fusion-plugin-react-router": "^1.5.1",
    "fusion-plugin-styletron-react": "^2.5.4",
    "fusion-plugin-universal-events": "^1.3.2",
    "fusion-react": "^1.3.7",
    "fusion-tokens": "^1.1.1",
    "prop-types": "^15.7.2",
    "react": "^16.8.1",
    "react-dom": "^16.8.1",
    "styletron-react": "^4.4.4"

Error: Cannot find module 'C:projectsmy-fusion-app ode_modulessource-map-supportsource-map-support.js'

Today I wanted to get started with Fusion.js and followed the guide on https://fusionjs.com/docs/getting-started.
I've used yarn create fusion-app my-fusion-app to create a new project and ran the command yarn run dev to start developing. Then on the browser and in the console I've got this error message:

Error: Cannot find module 'C:projectsmy-fusion-app ode_modulessource-map-supportsource-map-support.js'

Function.Module._resolveFilename
module.js:547:15

Function.Module._load
module.js:474:25

Module.require
module.js:596:17

require
internal/module.js:11:18

Object.<anonymous>
C:\projects\my-fusion-app\.fusion\dist\development\server\server-main.js:2:1

Module._compile
module.js:652:30

Object.Module._extensions..js
module.js:663:10

Module.load
module.js:565:32

tryModuleLoad
module.js:505:12

Function.Module._load
module.js:497:3

Because of the missing backslashes on the missing module path, I suspect that this error only occurs because I'm using Windows. I also tested it on my MacBook and there everything works fine.

I'm not really sure if this is the correct repository this issue depends to. 😅

yarn create fusion-app my-fusion-app - internal/util.js:206 throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function');

cabox@box-codeanywhere:~/workspace$ yarn create fusion-app mytestapp
yarn create v1.9.4
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
- create-fusion-app
[#####################################################################################################################################] 319/319internal/util.js:206
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function');
^

TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function
at promisify (internal/util.js:206:11)
at Object. (/home/cabox/.config/yarn/global/node_modules/fusion-scaffolder/index.js:17:18)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Module.require (module.js:517:17)
at require (internal/module.js:11:18)
at Object. (/home/cabox/.config/yarn/global/node_modules/create-fusion-app/bin/cli.js:8:18)
error Command failed.
Exit code: 1
Command: /home/cabox/.yarn/bin/create-fusion-app
Arguments: mytestapp
Directory: /home/cabox/workspace
Output:

info Visit https://yarnpkg.com/en/docs/cli/create for documentation about this command.

Running "npx create-fusion-app my-app" throws error without yarn

npm version is 5.6.0, node version is 8.11.2.

Creating a new Fusion.js app in: /Users/vivek/vivek/fusion-framework-try/my-app

events.js:183
throw er; // Unhandled 'error' event
^

Error: spawn yarn ENOENT
at _errnoException (util.js:992:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)

Missing `FetchToken` value for `UniversalEvents` plugin after initial create

Description

After performing a fresh yarn create fusion-app example and running yarn dev, it looks like UniversalEvents plugin requires FetchToken to be registered.

screen shot 2018-06-27 at 5 00 45 pm

Suggested Fix

In the other examples it looks like FetchToken is registered with unfetch.

import { FetchToken } from 'fusion-tokens';
import fetch from 'unfetch';

__BROWSER__ && app.register(FetchToken, fetch);

If this is a valid fix I'm willing to open a quick PR for this.

Thanks!

node 10 support

hi there, im getting error when run yarn create fusion-app, seems --ignore-engines works only with add or install yarn options

$ yarn create fusion-app fusiontest --ignore-engines
yarn create v1.9.2
[1/4] 🔍 Resolving packages...
warning Lockfile has incorrect entry for "[email protected]". Ignoring it.
Couldn't find any versions for "aws-sdk" that matches "0.9.x"
? Please choose a version of "aws-sdk" from this list: 2.286.2
[2/4] 🚚 Fetching packages...
[-----------------------------------------------------------------------] 0/835(node:35598) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=4 <=9".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/create for documentation about this command.

$ node --version
v10.8.0

how to fix the issue? )

Windows 10 Enterprise - yarn dev - Error: Cannot find module

Hello!

I first off want to thank you for creating this amazing set of tools and plugins.

I'm receiving an error when trying to run yarn dev on Windows 10 Enterprise with Yarn 1.9.4. The app was created using yarn create fusion-app fusion:

Error: Cannot find module 'C:UserssomeuserDocumentsTestusion
ode_modulessource-map-supportsource-map-support.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Users\someuser\Documents\Test\fusion\.fusion\dist\development\server\server-main.js:2:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

It looks like the module is attempting to be located without slashes in the path. It also is treating lowercase "f" character in "fusion" as a special character of some sort. It seems to maybe even be removing critical characters in the path. When I create a project using command yarn create fusion-app baz, the following error occurs when executing yarn dev. The project was named "baz", but you can see in the first part of the error that the last "t" of "Test" and the "b" of "baz" is missing:

Error: Cannot find module 'C:UserssomeuserDocumentsTesaz
ode_modulessource-map-supportsource-map-support.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Users\someuser\Documents\Test\baz\.fusion\dist\development\server\server-main.js:2:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

Here is the system information just in case:

OS Name: Microsoft Windows 10 Enterprise
Version: 10.0.14393 Build 14393
System Type: x64-based PC
Processor: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz, 2904 Mhz, 2 Core(s), 4 Logical Processor(s)

All that being said, yarn build executes without error, but running yarn start after a successful yarn build:

$ fusion start
C:\Users\someuser\Documents\Test\baz\node_modules\fusion-cli\bin\cli-runner.js:12
  throw e;
  ^

Error: Cannot find module 'C:UserssomeuserDocumentsTesaz
ode_modulessource-map-supportsource-map-support.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Users\someuser\Documents\Test\baz\.fusion\dist\development\server\server-main.js:2:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
error Command failed with exit code 1.

I'm able to create and run other node based projects such as create-react-app, @angular/cli and @vue/cli without issue on this machine using both yarn and npm/npx.

Thank you for any assistance you can provide.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.