Coder Social home page Coder Social logo

a-tokyo / generator-at-angular Goto Github PK

View Code? Open in Web Editor NEW
7.0 5.0 1.0 462 KB

πŸ—Yeoman Generator for angular that uses Webpack as a module bundler, SASS as CSS preprocessor, UI router as default angular route, Karma with Jasmine for testing and Auto-generated Docs.

Home Page: https://a-tokyo.github.io/generator-at-angular

License: MIT License

JavaScript 87.39% CSS 2.57% HTML 9.57% Shell 0.46%
angular sass yeoman-generator webpack jasmine ui-router karma modular angular-material bootstrap

generator-at-angular's Introduction

generator-at-angular

npm version Build Status Coverage Status

Yeoman generator for AngularJS + Webpack with ES6 and SASS.wiki

  • Babel 6 with ES2017 features.
  • Latest Webpack with Tree Shaking feature enabled.
  • SASS as CSS preprocessor.
  • Angular UI router as default router.
  • Karma and Jasmine for testing.
  • All necessary webpack loaders already included (Sass, Images, Fonts, ngAnnotate, ngTemplateCache, etc.)
  • Proxy configured to make cross origin requests with a simple prefix.
  • Automatic Application Documentation

Directory Layout

β”œβ”€β”€ /config/                                         #Configurations
β”‚   └── /webpack/                                    #Webpack config files
β”‚   β”‚   β”œβ”€β”€ /environments/                           #Webpack env configs
β”‚   β”‚   β”‚   β”œβ”€β”€ /development.js                      #Development env config
β”‚   β”‚   β”‚   └── /production.js                       #Production env config
β”‚   β”‚   └── global.js                                #Global webpack config
β”œβ”€β”€ /dist/                                           #The built application directory to be deployed
β”œβ”€β”€ /docs/                                           #Application Documentation (Auto Generated)
β”‚   β”œβ”€β”€ /docs-assets/                                #Application Documentation assets
β”‚   β”‚   └──/docs.js                                  #Application Documentation in JSON format (Auto Generated and editable)
β”‚   └── /docs.html                                   #Application Documentation HTML (Auto Generated)
β”œβ”€β”€ /node_modules/                                   #3rd-party libraries and utilities
β”œβ”€β”€ /src/                                            #Source folder
β”‚   β”œβ”€β”€ /app/                                        #Application code
β”‚   β”‚   β”œβ”€β”€ /components/                             #Shared UI components
β”‚   β”‚   β”‚   └── /component/                          #Shared component. Place component's styles, components, directives, templates here
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /components/                     #Nested components. Place nested components here.
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /directives/                     #Component related directives.
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /services/                       #Component services.
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /component.component-spec.js     #Component unit tests JS                 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /component.component.js          #Component definition JS                 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /component.component.html        #Component template          
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /component.module.js             #Component module                 
β”‚   β”‚   β”‚   β”‚   └── /component.component.scss        #Component styles             
β”‚   β”‚   β”œβ”€β”€ /core/                                   #Shared angular services/directives
β”‚   β”‚   β”‚   β”œβ”€β”€ /directives/                         #Shared directives
β”‚   β”‚   β”‚   β”‚   └── /directive/                      #Shared directive. Place directive's templates and controller here.
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /directive.directive-spec.js #Directive unit tests
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /directive.directive.js      #Directive definition, link and controller
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /directive.html              #Directive template (optional)
β”‚   β”‚   β”‚   β”‚   β”‚   └── /directive.scss              #Directive styles (optional)
β”‚   β”‚   β”‚   β”œβ”€β”€ /services/                           #Shared services
β”‚   β”‚   β”‚   β”‚   └── /service/                        #Shared directive. Place directive's templates and controller here.
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /service.factory-spec.js     #Service unit tests
β”‚   β”‚   β”‚   β”‚   β”‚   └── /service.factory.js          #Service definition
β”‚   β”‚   β”‚   └── /core.module.js                      #Import of all core components should be here
β”‚   β”‚   β”œβ”€β”€ /pages/                                  #All pages-dependent content should place here
β”‚   β”‚   β”‚   β”œβ”€β”€ /page/                               #page
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /page.controller-spec.js         #page Controller unit tests
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /page.controller.js              #page Controller
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /page.html                       #page template
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /page.module.js                  #page module
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ /page.route.js                   #page routes
β”‚   β”‚   β”‚   β”‚   └── /page.scss                       #page styles
β”‚   β”‚   β”‚   └── /.../                                #Other pages...
β”‚   β”‚   β”œβ”€β”€ /index.bootstrap.js                      #Entry point. Import internal and external modules and bootstrap (RUN) angular application
β”‚   β”‚   β”œβ”€β”€ /index.components.js                     #Custom components definition
β”‚   β”‚   β”œβ”€β”€ /index.config.js                         #Function that will be triggered in Angular's "config" phase
β”‚   β”‚   β”œβ”€β”€ /index.module.js                         #Main application's module
β”‚   β”‚   β”œβ”€β”€ /index.routes.js                         #Describe only "otherwise" and async routes here
β”‚   β”‚   β”œβ”€β”€ /index.run.js                            #Function that will be triggered in Angular's "run" phase
β”‚   β”‚   β”œβ”€β”€ /index.vendor.js                         #Import all vendors and 3rd party plugins here
β”‚   β”œβ”€β”€ /assets/                                     #Static content
β”‚   β”‚   β”œβ”€β”€ /data/                                   #Data (e.g: JSON files)
β”‚   β”‚   β”œβ”€β”€ /fonts/                                  #Fonts
β”‚   β”‚   β”œβ”€β”€ /images/                                 #Images
β”‚   β”‚   β”œβ”€β”€ /js/                                     #Extra libs folder
β”‚   β”‚   └── /styles/                                 #Styles folder
β”‚   β”‚       β”œβ”€β”€ /css/                                #CSS, place external css files here
β”‚   β”‚       └── /sass/                               #SASS
β”‚   β”‚           β”œβ”€β”€ /fonts.scss                      #Fonts SASS file, define your fonts here.
β”‚   β”‚           β”œβ”€β”€ /index.scss                      #Index SASS entry file, bundles all SASS files.
β”‚   β”‚           └── /main.scss                       #Main SASS file, define your global styling here.
β”‚   β”œβ”€β”€ favicon.ico                                  #Application icon to be displayed in bookmarks
β”‚   └── tpl-index.ejs                                #Template for html-webpack-plugin that will be transpiled into index.html in /dist
β”œβ”€β”€ .babelrc                                         #Babel config with presets and plugins
β”œβ”€β”€ .editorconfig                                    #Editor config to help developers define and maintain consistent coding styles.
β”œβ”€β”€ .eslintrc.json                                   #eslint config with parse options, rules, etc.
β”œβ”€β”€ .gitignore                                       #List of files to ignore by git
β”œβ”€β”€ .yo-rc.json                                      #Defines the root of the project, allows your user to run commands in subdirectories.
β”œβ”€β”€ karma.conf.js                                    #Karma configuration file for testing
β”œβ”€β”€ package.json                                     #The list of project dependencies and NPM scripts
β”œβ”€β”€ README.md                                        #README file
β”œβ”€β”€ test-context.js                                  #Test context, '*-spec.js' files
└── webpack.config.js                                #Bundling and optimization settings for Webpack

Getting Started

Prerequisites: Node, Yeoman and Webpack.

  • To install Node, visit nodeJS
  • To install Yeoman and Webpack: npm install -g yo webpack

Next, install this generator:

npm i -g generator-at-angular

Creating a project:

mkdir MyAwesomeApp && cd $_
yo at-angular

Running a generator:

yo at-angular                                                # Generates an angular appplication
yo at-angular:page my-page                                   # Generates a page (partial)
yo at-angular:service my-service                             # Generates a service
yo at-angular:service my-component/my-service                # Generates a service in a component
yo at-angular:directive my-directive                         # Generates a shared directive
yo at-angular:directive my-component/my-directive            # Generates a directive in a component
yo at-angular:component my-component                         # Generates a component
yo at-angular:component my-component/my-nested-component     # Generates a nested component
yo at-angular:component my-component/my-nested-component/... # Generates a multiple nested component
yo at-angular:remove                                         # Runs the at removal tool to remove a generated item

Running the project:

npm start or npm run dev - To start development server on localhost:8080.
npm run build - To make production-ready build run after few moments you will see build id dist folder.
npm test - To run all tests once, should be used for the CI.
npm run tests - To run tests in watch mode.
npm run docs - To open the auto-generated docs in your default browser.

Out of the box optional supports:

  • Angular Material: UI Component framework provides a set of reusable UI components based on Google’s Material Design. https://material.angularjs.org/latest/getting-started
  • Boostrap Sass: bootstrap-sass is a Sass-powered version of Bootstrap (Once Boostrap 4 is stable it'll be used instead of 3)

Extra Features

  • Automatic Application Documentation
    • Documentation can be view in docs/docs.html which is a simple angular application to view the docs in a neat way.
    • The Documentation itself is stored in docs/docs-assets/docs.js in JSON that can be edited and customized.

Generator options

  • To create an angular application quickly using the defaults run
    yo at-angular --d or yo at-angular --default
  • To create an angular application quickly using the DREIDEV structure and defaults run
    yo at-angular --dreidev

Tips

  • To keep the SASS/SCSS clean and modular use BEM Syntax
  • To keep the git repository's branch model modular and scalable use git flow
  • For more information about versions, features and migration check the wiki
  • For help, questions, feature requests and bug reports, submit an issue

Frequently faced problems

While bulding, error css-loader module not found:

In your package.json replace "extract-text-webpack-plugin": "^2.0.0-beta.4", with "extract-text-webpack-plugin": "2.0.0-beta.5",


generator-at-angular's People

Contributors

a-tokyo avatar cmosh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

dreidev

generator-at-angular's Issues

Any issues building projects?

no problem running via npm start, however filled with red on postcss when trying to run "npm run build"

any ideas what is causing it?

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.