Make sure you have Node version >= 6.0 and NPM >= 3
# clone the repo
# --depth 1 removes all but one .git commit history
git clone --depth 1 https://github.com/joatin/jsound-client.git
# change directory to the repo
cd jsound-client
# install the repo with yarn
yarn install
# start the server
yarn start
# use Hot Module Replacement
yarn run server:dev:hmrgo to http://0.0.0.0:3000 or http://localhost:3000 in your browser
We use the component approach in. This is the new standard for developing Angular apps and a great way to ensure maintainable code by encapsulation of our behavior logic. A component is basically a self contained app usually in a single file or a folder with each concern as a file: style, template, specs, e2e, and component class. Here's how it looks:
jsound-client/
├──config/ * our configuration
| ├──helpers.js * helper functions for our configuration files
| ├──spec-bundle.js * ignore this magic that sets up our Angular testing environment
| ├──karma.conf.js * karma config for our unit tests
| ├──protractor.conf.js * protractor config for our end-to-end tests
│ ├──webpack.dev.js * our development webpack config
│ ├──webpack.prod.js * our production webpack config
│ └──webpack.test.js * our testing webpack config
│
├──src/ * our source files that will be compiled to javascript
| ├──main.browser.ts * our entry file for our browser environment
│ │
| ├──index.html * Index.html: where we generate our index page
│ │
| ├──polyfills.ts * our polyfills file
│ │
│ ├──app/ * WebApp: folder
│ │ ├──app.component.spec.ts * a simple test of components in app.component.ts
│ │ ├──app.e2e.ts * a simple end-to-end test for /
│ │ └──app.component.ts * a simple version of our App component components
│ │
│ └──assets/ * static assets are served here
│ ├──icon/ * our list of icons from www.favicon-generator.org
│ ├──service-worker.js * ignore this. Web App service worker that's not complete yet
│ ├──robots.txt * for search engines to crawl your website
│ └──humans.txt * for humans to know who the developers are
│
│
├──tslint.json * typescript lint config
├──typedoc.json * typescript documentation generator
├──tsconfig.json * typescript config used outside webpack
├──tsconfig.webpack.json * config that webpack uses for typescript
├──package.json * what npm uses to manage it's dependencies
└──webpack.config.js * webpack main configuration file
What you need to run this app:
nodeandyarn(brew install node)- Ensure you're running the latest versions Node
v6.x.x+ (orv7.x.x) and NPM3.x.x+
If you have
nvminstalled, which is highly recommended (brew install nvm) you can do anvm install --lts && nvm usein$to run with the latest Node LTS. You can also have thiszshdone for you automatically
Once you have those, you should install these globals with npm install --global:
webpack(npm install --global webpack)webpack-dev-server(npm install --global webpack-dev-server)karma(npm install --global karma-cli)protractor(npm install --global protractor)typescript(npm install --global typescript)
forkthis repocloneyour forknpm install webpack-dev-server rimraf webpack -gto install required global dependenciesyarnto install all dependenciesyarn serverto start the dev server in another tab
After you have installed all dependencies you can now run the app. Run yarn server to start a local server using webpack-dev-server which will watch, build (in-memory), and reload for you. The port will be displayed to you as http://0.0.0.0:3000 (or if you prefer IPv6, if you're using express server, then it's http://[::1]:3000/).
# development
yarn server
# production
yarn build:prod
yarn server:prod# development
yarn build:dev
# production (jit)
yarn build:prod
# AoT
yarn build:aotyarn server:dev:hmryarn watchyarn testyarn watch:test# update Webdriver (optional, done automatically by postinstall script)
yarn webdriver:update
# this will start a test server and launch Protractor
yarn e2e# this will test both your JIT and AoT builds
yarn ciyarn e2e:liveyarn build:dockerConfiguration files live in config/ we are currently using webpack, karma, and protractor for different stages of your application
The following are some things that will make AoT compile fail.
- Don’t use require statements for your templates or styles, use styleUrls and templateUrls, the angular2-template-loader plugin will change it to require at build time.
- Don’t use default exports.
- Don’t use
form.controls.controlName, useform.get(‘controlName’) - Don’t use
control.errors?.someError, usecontrol.hasError(‘someError’) - Don’t use functions in your providers, routes or declarations, export a function and then reference that function name
- @Inputs, @Outputs, View or Content Child(ren), Hostbindings, and any field you use from the template or annotate for Angular should be public
Any stylesheets (Sass or CSS) placed in the src/styles directory and imported into your project will automatically be compiled into an external .css and embedded in your production builds.
For example to use Bootstrap as an external stylesheet:
- Create a
styles.scssfile (name doesn't matter) in thesrc/stylesdirectory. npm installthe version of Boostrap you want.- In
styles.scssadd@import 'bootstrap/scss/bootstrap.scss'; - In
src/app/app.module.tsadd underneath the other import statements:import '../styles/styles.scss';
To take full advantage of TypeScript with autocomplete you would have to install it globally and use an editor with the correct TypeScript plugins.
TypeScript 2.1.x includes everything you need. Make sure to upgrade, even if you installed TypeScript previously.
npm install --global typescript