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

generator-angular-website

v2.0.5

Published

A yeoman generator to scaffold angular based websites, features and components.

Downloads

28

Readme

generator-angular-website

A yeoman generator to scaffold angular based websites, features and components.

Overview

This generator can create an opinionated AngularJS web application. Not only a single website but rather a set of components that make up a complete enterprise scale web application solution made up of the following parts:

  • A styles bower component that holds all styles across all applications and white-labels for your organization.
  • An assets bower component that holds all assets across all applications and white-labels for your organization.
  • An opinionated feature centric core web application following John Papa's style-guide.
  • An opinionated features template following John Papa's style-guide.

Goal

The goal is to enable large even distributed teams to collaborate easily on a web application that scales and supports automated continues delivery. This is achived by:

  • vertical development and having lots of components rather than a monolithic blob.
  • a commitment to versioned component dependencies via Git Release Tags and bower.
  • a commitment to typical Git development flows with feature branches and pull-requests.
  • a feature centric approach that keeps all parts of a feature together in one place.
  • a well defined hierarchical styles structure with a commitment to bootstrap themes.
  • an API driven approach with client data-services as raw data sources.
  • a fully automated development process via Grunt.
  • a fully automated build and deployment process via Travis.

Prerequisites

First of all you need to install NodeJS

The next point is important if you need authentication to access private components of GitHub. Open a Git Shell and store your user credentials:

git config --global credentials.helper store

Finally install the yeoman and this angular website generator:

npm install -g yo
npm install -g generator-angular-website

Usage

Now that you have setup your system you can use this generator.

Before we create the core web application we have to make sure we have the necessary dependencies in place.

website

Now we are ready to create the core website:

yo angular-website

Make sure you enter the correct name of your company styles component and the default whitelabel.

We recommend that you name your website like company-website.

After the successful creation of your website the generator will trigger the installation of all npm and bower dependencies.

Start development

The development process is fully automated and even supports live-reload of your browser whenever you make changes to your website.

To start development and run the website in your browser simply run:

npm run dev

This will serve your website and the default white-label.

Build the minified production release

The production output is very different from the development output. Basically it is compressed JavaScript and StyleSheets in fewer files.

To build this run:

npm run build

Features

The default Yeoman website template comes with a predefined home feature. Obviously you want to add more features to your application. That can be easily done with the following command:

yo angular-website:feature

Make sure you run this command within the root folder of your website!

Full Page Feature

A full page feature is pretty much what you expect, a feature that will cover the entire site and is not directly dependent on parent features.

http://www.company.com/home
http://www.company.com/users

To create this kind of feature you would answer the Generators questions in this way.

? Module name?                  = app.users                 -- app.[feature name]
? Feature name in camelCase?    = users
? Routing state?                = users                     -- notice that there is no parent state here - this is what makes it a full page feature!
? Routing url?                  = /users
? Output path?                  = app/users                 -- notice that features should follow the routing location in the projects directory structure.

Full Page Feature as Logical Child Feature

Logically a full page feature can still be a child of another feature. To clarify this look at these examples.

http://www.company.com/home/configuration                   -- This is an example of a full page feature that is a logical child of the home feature.
http://www.company.com/users/4711/settings                  -- This is an example of a full page feature that is a logical child of the users/user feature.

To create this kind of feature you would answer the Generators questions in this way.

? Module name?                  = app.users.user.settings   -- app.[feature name] or app.[logical parent(s)].[feature name]
? Feature name in camelCase?    = settings
? Routing state?                = settings                  -- notice that there is no parent state here - this is what makes it a full page feature!
? Routing url?                  = /users/:id/settings       -- notice that we have logical parents in the route - this is what makes it a logical child feature.
? Output path?                  = app/users/user/settings   -- notice that even logical child features should follow the routing location in the projects directory structure.

Partial Child Feature

A Partial Child Feature does not cover the full Website. It is rather embedded in its parent feature's frame. The parent feature will have one or more ui-view elements. These elements are the insertion points for Partial Child Features.

http://www.company.com/dashboard/gauges                     -- This location will show the Partial Child Feature "gauges" within the parents ui-view elements.
http://www.company.com/dashboard/meters                     -- This location will show the Partial Child Feature "meters" within the parents ui-view elements.

To create this kind of feature you would answer the Generators questions in this way.

? Module name?                  = app.dashboard.gauges      -- app.[parent(s)].[feature name]
? Feature name in camelCase?    = gauges
? Routing state?                = dashboard.gauges          -- notice that there is a parent state here - this is what makes it a partial child feature!
? Routing url?                  = /gauges                   -- notice that the parent's feature path is not part of the url. It is inherited by the routing state.
? Output path?                  = app/dashboard/gauges      -- notice that partial child features should follow the routing location in the projects directory structure.

Component generators

Feature Controllers

Sometimes you might need more than one controller within your feature. You can easily generate a new controller with:

yo angular-website:controller

Make sure you run this command within the root folder of your website!

Feature Services

Sometimes you might need more than one service within your feature. You can easily generate a new service with:

yo angular-website:service

Make sure you run this command within the root folder of your website!