Giter Site home page Giter Site logo

projectevergreen / create-evergreen-app Goto Github PK

View Code? Open in Web Editor NEW
16.0 7.0 5.0 6.2 MB

Get up and running with an evergreen web application development stack designed by, and for, today's modern web.

Home Page: https://projectevergreen.github.io/

JavaScript 86.69% CSS 3.85% HTML 9.47%
webcomponents webpack babel evergreen modern-web lit-html lit-element

create-evergreen-app's Introduction

create-evergreen-app

GitHub release CircleCI branch GitHub issues GitHub issues GitHub license

โ›” Attention This project has been archived and is no longer under active maintenance. If you are looking for a great tool for building websites and apps, please join us with our latest project Greenwood! ๐ŸŒŸ

Overview

A starter project for getting up and running with an evergreen web application development stack designed by, and for, today's modern web. Create Evergreen App

Project Goals

The goal of Project Evergreen is to march alongside the web and demonstrate those features in projects like these, that can be a reference and starting point, so that both developers and users can benefit from a modern application intended for modern browsers. Evergreen Web Applications aim to be performant, promote usage of modern web features, be accessible to a wide range of users, and be a productive experience for developers.

Getting Started

Make sure you have a LTS version of Node.js (>= 10.x) and then follow these steps to get up and running:

# 1) Create new evergreen app
$ npx create-evergreen-app my-app

# 2) Change Directory
$ cd my-app

# 3) Start developing!
$ npm start

# or

$ yarn start

You can also run the installer locally by cloning the repo and using NodeJS

$ git clone https://github.com/ProjectEvergreen/create-evergreen-app.git
$ cd create-evergreen-app
$ npm ci # install project dependencies
$ node ./tasks/cea-install.js my-app # you can pass other supported CLI params here as well
$ mv my-app /where/ever/you/want # move my-app folder anywhere you want, and start developing!

Additional CLI Commands

Here are some additional commands you can use when running the installer

# install dependencies with Yarn instead of npm
$ npx create-evergreen-app my-app --yarn

# get help
$ npx create-evergreen-app --help

# get the version
$ npx create-evergreen-app --version

Developing with Create Evergreen App

To start developing, simply open the my-app folder in your favorite IDE (VSCode has great modern JavaScript support) and start editing and adding files as you need in src/.

Development Workflows

Automated tasks have been made available as npm scripts that you can run from the command line using yarn or npm run:

  • develop - To start a development server with live reload and file watching
  • build - Generate a production build of the app for deployment
  • serve - Locally serve a production build
  • test - Run unit tests in TDD mode (prepend with NODE_ENV=production for "single run" usage)
  • start - alias to the develop task

e.g. to start developing, run

# yarn
$ yarn develop

or

# npm
$ npm run develop

Package Management

Your team may choose to use either npm or Yarn, just make sure to pick one and remove the other manager's lock file. Make sure to update the lock file whenever adding / removing a package.

Guides

These are some guides related to configuring different parts of this application to customize it for your needs.

Folder Structure

There is no right or wrong folder structure per se as with most decisions relating to technology, it's about finding the best tool for the job. Pick the conventions that fit your team / project best.

That said, CEA does come with with a lightly opinionated structure in the src/ directory as one of the main goals of a good folder structure should be to assist in the finding of files / code faster and being predicatable. Here is some info on the approach presented / suggested in this repo:

  • index.js - Main Entry point into the application (defined in webpack.config.common.js)
  • index.html - Defines the HTML "shell" of the application.
  • app/ - The top level "app" component, that will be used to bootstrap the application.
  • components/ - Essentially all the custom elements for an app will go here, encapsulating all reusable UI logic.
  • pages/ - Routable states and / or views that users will navigate to within an application.
  • services/ - Utilities for making (RESTful) API calls, convenience "wrappers" around browser APIs (Web Storage), etc. These generally don't interact with the DOM (that's what components are for).

Unit tests are recommended to be kept side by side with the component / class / etc. For integration and E2E tests, consider making a test/ directory alongside the src/ directory and put those tests there.

Setting Up (API) Proxies

In webpack.config.develop.js and lws.config.js are sections for setting up proxies for routing requests, say to an API running in your development envrionment. Edit the placeholders to match your particular needs.

CSS + Shadow DOM

// TODO

Performance

Performance is an important consideration for developing and maintaing any modern web application. Out of the box, this project uses webpack's default settings for performance budgets and will error when its thresholds are exceeded.

The goal of this project will be to support good code splitting and lazy loading strategies by default to allow apps to scale horizontally as more pages / features / dependencies get added.

To learn more about performance best practices for modern web application development, check out the wiki.

Unit Testing

For convenience, Create Evergreen App comes with the dependencies needed to run two browsers out of the box

  1. Chrome (headless w/Puppeteer)
  2. Firefox

Using Firefox

  1. Firefox (and other browsers) will likely need Custom Elements and Shadow DOM polyfilled. To add this polyfill in Karma, uncomment the lines in the files array in karma.conf.js related to ~@webcomponents.
  2. Add Firefox to the browsers array in karma.conf.js.
  • For information on adding more browsers, see the Karma docs.
  • For more information on testing in general, see our wiki!.

Chrome headless is enabled by default since it is the most portable between local and continuous integration environments.

Acknowledgements

This project is made by possible with the much appreciated existence of tools like:

And of course, nods and kudos go out to the maintainers of Create React App (CRA) and Pascal Shlip (@thepassle) of Create Lit App for the inspiration.

Thank you, to all of you!

create-evergreen-app's People

Contributors

devlab2425 avatar hutchgrant avatar thescientist13 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

create-evergreen-app's Issues

As a developer I would like routing in my application

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Routing is an essential part to creating a web application and as such should be added to CEA.

Details

Include a router out of the box with an example of routing between two pages. Bonus points for implementing route based code splitting w/ lazy loading.

For more info, see ProjectEvergreen/project-evergreen#2

improve tear down of unit tests

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Properly tearing down unit tests is an important part of making sure tests run cleanly and with a fresh test bed between each run.

The example in header.spec.js should have the afterEach callback updated to remove the DOM element made in the beforeEach.

Details

https://github.com/ProjectEvergreen/create-evergreen-app/blob/master/src/components/header/header.spec.js#L14

afterEach(() => {
  header = null;
});

By adding this first

header.remove();

Improve CEA installation script

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

In relation to #11 , the installation script right now is a little hacky and duct taped together (IMO), but it should get the job done.

Details

  1. It wouldn't have to clone from git, the contents could be derived from the package contents itself (0.4.0)
  2. Running npm install by default (0.3.0)
  3. Actually moving into the new directory would be pretty nice. ๐Ÿ’ฏ (0.3.0)

For some good inspiration, see how it is done by Create React App

lint task not (likely) showing output consistently across platforms

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Current lint task not working as expected / providing false positives across platform.

  "scripts": {
    "lint": "eslint *.js src/**/**/*.js"
  },

Details

I came across this and realized I've been doing eslint wrong this entire time ๐Ÿคฆโ€โ™‚๏ธ . It should be

  "scripts": {
    "lint": "eslint \"*.js\" \"src/**/**/*.js\""
  },

enhance installer console output by colorizing success and error console logging

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

After a long npm install, it would be great to leverage chalk for the final status output of the installer using color to help tell the user if the installer completed successfully or note.

Details

In the run function:

  • For the "success" message, we should use green.
  • For the error message, it should be red

As a developer I would like support for unit testing in CEA

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Unit testing is an important part of developing a web application and so there should be support for unit testing built into Create Evergreen App.

Details

It would be nice if Karma could be used here and some tests added. For more info see and a good chance to evaluate Karma, see ProjectEvergreen/project-evergreen#44.

CEA home page not loading (regeneratorRuntime is not defined)

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Ran these steps to test

$ npx -D github:ProjectEvergreen/create-evergreen-app create-evgreen-app my-app
$ cd my-app
$ npm start

screen shot 2018-11-18 at 3 17 22 pm

$ npm -v && yarn -v && node -v
6.4.1
1.7.0
v8.12.0

Details

Not sure if this happens on master?

As a developer I would like support for making a Progressive (Evergreen) Web Application

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Progressive Web Applications help bridge the web to the mobile world with an emphasis on performance and offline capabilities. That said, not every application needs to be one.

Details

Providing support either through code, documentation, or default behavior, (or all three) would be the goal of this feature request.

I think for now it's ok have the dependencies installed, with documentation for enabling it. Or maybe a configuration option in webpack?

Tasks

This issue will likely require a few iterations / discussions

  1. Add basic manifest
  2. Enable Service Worker (installed, but off by default? enforces HTTPS) - see #8

contextualize CEA installer when using --yarn flag

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

When running

$ npx create-evergreen-app my-app --yarn

The user will see this

Installing project dependencies...
yarn install v1.12.3
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.

And also

 npx create-evergeen-app my-app --yarn
.
.
.
And then launch your project with: npm start
-------------------------------------------------------

Details

If the --yarn flag is passed, we should delete package-lock.json before running install and make sure the instructional text references Yarn instead of npm.

related to #23

Update Dependencies

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Dependencies favicons-webpack-plugin and webpack-dev-server need to be updated, npm audit threw a warning about vulnerabilities.

Details

npm audit

found 6 vulnerabilities (3 low, 2 moderate, 1 high) in 14929 scanned packages

Deploy to GitHub pages

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Get this project deployed to GitHub pages under the Project Evergreen domain.

Details

npx install command failing

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

$ npx github:ProjectEvergreen/create-evergreen-app
npx: installed 3 in 3.557s
Cannot find module 'cross-spawn'

Details

Likely related to moving away from using git as part of #12

resolve npm audit

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Running npm audit shows a few packages that could use updating

$ npm audit

                       === npm audit security report ===

# Run  npm install --save-dev [email protected]  to resolve 1 vulnerability
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ High          โ”‚ Missing Origin Validation                                    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Package       โ”‚ webpack-dev-server                                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Dependency of โ”‚ webpack-dev-server [dev]                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Path          โ”‚ webpack-dev-server                                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ More info     โ”‚ https://nodesecurity.io/advisories/725                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                Manual Review                                 โ”‚
โ”‚            Some vulnerabilities require your attention to resolve            โ”‚
โ”‚                                                                              โ”‚
โ”‚         Visit https://go.npm.me/audit-guide for additional guidance          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Low           โ”‚ Prototype Pollution                                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Package       โ”‚ lodash                                                       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Patched in    โ”‚ >=4.17.5                                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Dependency of โ”‚ favicons-webpack-plugin [dev]                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Path          โ”‚ favicons-webpack-plugin > favicons > cheerio > lodash        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ More info     โ”‚ https://nodesecurity.io/advisories/577                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Low           โ”‚ Prototype Pollution                                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Package       โ”‚ lodash                                                       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Patched in    โ”‚ >=4.17.5                                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Dependency of โ”‚ favicons-webpack-plugin [dev]                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Path          โ”‚ favicons-webpack-plugin > favicons > merge-defaults > lodash โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ More info     โ”‚ https://nodesecurity.io/advisories/577                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Low           โ”‚ Regular Expression Denial of Service                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Package       โ”‚ debug                                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Patched in    โ”‚ >= 2.6.9 < 3.0.0 || >= 3.1.0                                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Dependency of โ”‚ favicons-webpack-plugin [dev]                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Path          โ”‚ favicons-webpack-plugin > favicons > node-rest-client >      โ”‚
โ”‚               โ”‚ debug                                                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ More info     โ”‚ https://nodesecurity.io/advisories/534                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
found 4 vulnerabilities (3 low, 1 high) in 14834 scanned packages
  run `npm audit fix` to fix 1 of them.
  3 vulnerabilities require manual review. See the full report for details.

Details

Staying up to date with our packages should be a good habit of ours.

add unit tests for CEA installation task

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Running a script that tests the file output / structure of the CEA install script would be a good improvement to the CI process, ensuring no unexpected changes in the output of the script.

Details

CEA script is already being run as part of CircleCI (.circleci/config.yml), so using something like Ava or Mocha to read and assert the contents of my-app would be most excellent ๐Ÿ’ฏ

Upgrade to lit-element 2.0.1

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

@polymer/lit-element is now just lit-element

Details

CEA template app @polymer/lit-element dependency needs to upgrade to lit-element 2.0.1

Karma test shim showing up in coverage results

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

When generating coverage reporting, only source code should be included, not files likes karam-test-shim.js.
screen shot 2018-10-23 at 6 42 50 am

Details

Relates to #14

As a developer, I would like consistent code formatting

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Code formatting needs to be consistent for all developers of CEA. I propose using a prettier configuration

Details

Prettier can consistently format CSS, HTML, JS, SCSS, JSON, GraphQL, Markdown.

One problem is that lint is throwing errors for when a single line html element or javascript is reformatted to multi-line.

As a developer, I would CEA to customize package.json for my project

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Right now the project is installing source files from this repo from GitHub, or if #12 gets implemented, it would be pulling from a tarball of the project from npm.

Either way, the contents of package.json will be specific to the project, e.g.

  • name
  • version
  • description?
  • others?

Details

It would be great if CEA could rewrite package.json with more appropriate starting values, e.g.

  • name: app name from install task (default is my-app)
  • version: 0.1.0
  • description: user provided, or stubbed out?

Evaluate how to best pull in polyfills

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Currently polyfills are hardcoded in index.html. It might be worth evaluating the performance benefits of being able to package those up with dependency management + webpack.

Details

This can make things a bit more portable and managed via build tools / filesystem, which it might be more intuitive. It is important to note polyfills must be installed globally, and not with import.

make the CI build more npm centric

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Currently Yarn is used to run all the build tasks in CircleCI, but npm is probably more widely accessible, and is used in the docs, so it should probably tested just as much as Yarn.

Details

Have npm run all the build tasks, in addition to Yarn

Docker support

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Docker is ubiquitous and it may be a good idea to include a Dockerfile for quick container building/testing/serving.

Details

Brett Fisher has a good example for Node that can be modified for CEA. This would benefit people who prefer to use containers or need them for their CI/CD pipeline.

As a developer I would like to use webpack dev server configuration for testing my production build

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

In the serve task, which is used to host a production build locally, a different tool is used. However, for development, webpack-dev-server supports a lot of features like proxying API requests and being able to augment requests / responses.

It would be nice to reuse this for production build testing.

Details

Essentially, create a webpack.config.serve.js that would reuse parts of webpack.config.develop.js and serve would:

  1. Build the app
  2. Start webpack-dev-server with this new config

Script vs Template Dependencies

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

At the moment, there is an issue with PRs #64 and #65 due to the template and install script using the same package.json

The solution I propose is to instead put the templated files in a seperate directory, with its own seperate package.json, so that dependencies can be correctly seperated.

For example, the installed application doesn't need mocha, chai, commander, or chalk. Nor does it need the tests of the install script. This has been discussed already so I'm just going to go ahead and merge #64 and #65 changes into a newly organized directory structure.

Details

โ”œโ”€โ”€ tasks
โ”‚   โ””โ”€โ”€ cea-install.js
โ”œโ”€โ”€ template
โ”‚   โ””โ”€โ”€ src
โ”‚       โ”œโ”€โ”€ app
โ”‚       โ”œโ”€โ”€ components
โ”‚       โ”‚   โ””โ”€โ”€ header
โ”‚       โ””โ”€โ”€ pages
โ”‚           โ””โ”€โ”€ home
โ”‚       โ””โ”€โ”€ package.json
โ”œโ”€โ”€ test
โ”‚   โ””โ”€โ”€ test.js
โ””โ”€โ”€ package.json

Two potential future problems with this:

  1. the template/package.json files key is still used for whitelisting which files to copy. I would prefer it to use anything we put in template directory
  2. This assumes no other packages need to be managed through this repo. There may be a need to have additional scripts/packages to expand functionality and you'll need to manage that through lerna which requires a slightly altered structure. e.g. Adding something like evergreen-scripts

generated package.json is not the output from npmInit

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

CEA Installer is supposed to create a custom package.json when running npmInit, instead the full contents of template/package.json is being generated instead.

Details

Seems to be a small (non breaking) regression from #77.

Looks like the simplest fix is to call initSrc first. This feels like an ๐Ÿ†— solution since it would make sense to

  1. Start with the contents of template/ as a base
  2. Apply any customizations / configurations

.gitignore file not being generated anymore

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

This used to be supported, but has been temporarily disabled in order to resolve #57 since .gitignore is ignored by npm.

Details

This could just be created on the fly by the cea-install.js script, since it's just a simple text file.

RFC separate template and script dependencies

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

As explained in #71, there is a large problem with the way the current installer is organized which prevents adding additional features. We currently are intentionally not using any additional dependencies for the CEA install task script because we don't want those dependencies to be installed with each generated application. The solution is simple and straightforward, move the application template's src files into a separate template directory with it's own separate package.json and modify the install script accordingly. This way we can add tests to the install script and extend its use further with additional dependencies such as commander and chalk.

Details

  • add a separate package.json specifically for installer dependencies
  • instead of listing files in the generated application's package.json, we move that to the install script's package.json
  • test files installed correctly and error detection using mocha + chai
  • move src folder and application specific config files into separate template directory

Test it

The rfc-001 branch has been published to the npm registry under the name @evergreen-wc/test-cea so that you can quickly test the script does indeed work correctly with npx.

Generate a new evergreen app

npx @evergreen-wc/test-cea my-app

Generate a new evergreen app using yarn instead of npm

npx @evergreen-wc/test-cea myAppWithYarn --yarn

Check the current version

npx @evergreen-wc/test-cea --version

Display Usage and Options

npx @evergreen-wc/test-cea --help

RFC: Use Yarn instead of npm (or in addition too)

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Yarn is a very popular and robust package manager, which I personally quite prefer for it's deterministic lock file. npm generally doesn't always behave as expected in respect to the relationship between package.json / package-lock.json and what's in node_modules.

For example, it seems you need to pass a flag to avoid updating your lock file in npm.

For example, to do what yarn install does by default, it seems npm created an entire new API?

My feeling is, update the lock file when you add / delete, otherwise leave the lock file alone. Since we all run npm install so often, needing a flag seems cumbersome. ๐Ÿคทโ€โ™‚๏ธ

Details

I propose at least supporting Yarn, in addition to npm. Yes, npm is default with Node which is nice, but the two should work fine together.

Redesign CEA layout / styles

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Looks like Create React App released with a new layout / design. Maybe CEA should follow suit or come up with something of its own?

Details

screen shot 2018-10-25 at 7 40 49 pm

Have CI build run the installation task

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

It would be good to verify the installation step as part of every build.

Details

Should just be a matter of running it with node

Missing Manifest

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Generated asset manifest is missing.

Details

Manifest: Line: 1, column: 1, Unexpected token.

Solution

Add webpack manifest plugin to webpack config

npx install failing - cannot spawn child process

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Related to #54 , it looks like I had a local installation of create-evergreen-app, that was messing with things. I can now reproduce this across OSX, Linux, and Windows.

$ npx create-evergreen-app
npx: installed 3 in 1.49s
Cannot find module 'cross-spawn'
$ npx create-evergreen-app my-app
npx: installed 3 in 1.427s
Cannot find module 'cross-spawn'
$ npx -D -p  create-evergreen-app my-app
npx: installed 203 in 5.868s
npx: command not found: create-evergreen-app
$ npx -D -p create-evergreen-app create-evergreen-app  my-app
npx: installed 203 in 4.763s
npx: command not found: create-evergreen-app
$ npx create-evergreen-app create-evergren-app my-app
npx: installed 3 in 1.47s
Cannot find module 'cross-spawn'

Details

Maybe we need npm install and npx? I was hoping npx would replace the need for a global install.

Lockstep files in package.json with new project source files

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Since publishing a package requires putting desired files to be published in the files array of package.json. These same files are also used in the cea-install script too.

Details

It would be good to pull the files out of package.json and use them when creating the project files, which should significantly clean up the new repo creation process. With the copy-folder script, it should be possible to clean up this even more.

Compress the size of the logo image in the header component

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

The logo in the header component is pretty large, and could be optimized further to promote best practices.

Details

Ideally it would be nice if it was transparent and the header banner could be black, like in CRA.
screen shot 2018-09-22 at 8 07 13 pm

As a developer I would like CEA to score perfectly for Lighthouse (except PWA)

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Performance is a primary benefit claimed by Evergreen Web Applications, and as such should be tested for performance, even if naively so.

Details

After deploying to GitHub pages (#2 ) a Lighthouse audit should be run and all scores except for PWA (see #7 ) should be ๐Ÿ’ฏ

This might require resolving #4

This should include documentation in a wiki somewhere

As a developer I would like support for Hot Module Replacement / Reloading (HMR)

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

HMR is a feature of webpack's in-memory dev server that allows for only have to reload the modules that actually changed, instead of having to refresh the entire page and losing all the state of the app.

Details

It should be possible in theory, but not 100% certain. Have done it with React which is pretty much all JS, so I don't see why it wouldn't work with "vanilla" JS.

As a developer, I would like CEA to default to Yarn if it is installed / desired by the user

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Currently the instructions and changes as part of #12 adds the ability to have CEA do dependency installation (e.g. npm install)

It would be great to leverage Yarn instead if the user desires.

Details

Not sure the specific implementation:

  1. Maybe passing a flag, e.g. npx create-evergreen-app my-app --yarn
  2. Use it by default if the user has it installed
  3. Prompt the user in the terminal itself?

[Test] - Add Custom Elements v1 Polyfill and additional browsers for karma configuration

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

Right now there's only one browser to be tested ChromiumHeadlessConfigured, it would be nice to have karma-ie-launcher, karma-edge-launcher and karma-firefox-launcher out of the box.

In order to accomplish that, it's necessary to include the relevant web components js Polyfill for both browsers.

Details

Tell me if you require additional information

Proposal: Move configuration files into separate config directory

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

There are over 10 configuration files in the base directory and it makes new applications generated by create-evergreen-app a bit messy to look at. I propose moving all necessary configuration files(webpack, eslint, postcss, karma, babel) into a seperate config folder in the root directory.

Details

With the configuration files organized within their own subdirectory, it will be much cleaner, plus it's simply much easier for the install script to deal with. All the script needs to do is copy the src, docs, and config folders into a newly generated application. Like this:

config_organize_propsal

As a developer I would like CEA installation to upgrade my project

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

It would be cool if by running npx create-evergreen-app my-app and my-app already exists, it would be great if all the project configuration could be merged / updated in place, e.g.

  • webpack
  • babel config
  • eslintrc

Details

The idea would be try and preserve existing values if possible, and try and upgrade in place (like the Angular CLI or CRA would do)

[RFC] Use npm ci in the installer instead of npm install to ensure determinism for users

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

npm install is known to be underterministic, and has been acknowledged by the team as the expected way this feature should behave. Fair enough.

However, this means that the versions of the packages installed from template/package.json could be different (newer) than what is specified in the lock file. This is not good, and could lead to unanticipated results for users after running npx.

Details

For this reason, npm introduced npm ci, a quicker, more deterministic version of npm install that won't touch anything in package.json or package-lock.json.

I recommend npm ci be used instead of npm install in the installer script instead, ex.

const args = ['ci', '--loglevel', 'error'];

ESLint not respecting object spread / rest syntax

Type of Change

  • New Feature Request
  • Documentation
  • Improvement / Suggestion
  • Bug
  • Other (please clarify below)

Summary

This syntax, in the context of an evergreen application would be expected IMO so to have the linter complain seems inconsistent.

const otherObj = {};
const myObj = {
  name: 'owen'
};

myObj = {
  ...otherObj
}
ERROR in ./components/header/header.js
Module Error (from ../node_modules/eslint-loader/index.js):

/Users/owenbuckley/Workspace/project-evergreen/repos/create-evergreen-app/src/components/header/header.js
  11:3  error  Parsing error: Unexpected token ..

โœ– 1 problem (1 error, 0 warnings)

screen shot 2018-10-31 at 6 03 17 pm

screen shot 2018-10-31 at 6 03 31 pm

Details

Support object rest / spread

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.