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

@wizsolucoes/angular-starter

v15.0.1

Published

Generates Wiz boilerplate Angular starter application.

Downloads

153

Readme

Wiz Angular Starter Schematic

Sobre

Schematic para gerar código boilerplate com a arquitetura de referência corporativa para aplicações Angular. Compatível somente com aplicações Angular 14.

Uso

IMPORTANTE: Este schematic supõe que a aplicação usa SASS e deve ser executado em projetos novos, pois faz a sobrescrita de arquivos.

# Gerar uma nova aplicação Angular
ng new my-app --style=scss

# Entrar na pasta da nova aplicação
cd my-app

# Adicionar arquitetura
ng add @wizsolucoes/angular-starter

# Executar testes
npm run test:ci

# Executar lint
ng lint

# Rodar aplicação
ng serve

Obs: Se você estiver usando o Git Bash e encontrar um erro ao executar ng add @wizsolucoes/angular-starter, execute o comando no Terminal do VSCode ou em PowerShell.

Obs: É necessário fazer a configuração da biblioteca NGX Wiz SSO para explorar as funcionalidades do Starter.

Opções

White-label

Ao executar o schematic, você deve escolher se a aplicação é 'White-label' ou não, respondendo este prompt na linha de comando:

? Essa aplicação é 'White-Label'? (Y/n)

Para entender mais sobre a arquitetura 'White-label', consulte a documentação neste repositório.

Sobre a aplicação gerada

Estrutura

A aplicação tem 2 partes principais:

  • A parte "eager" que será carregada na inicialização na aplicação (o main.js bundle).
  • A parte "lazy" composta por funcionalidades da aplicação e que será carregada sob demanda como resultado da navegação do usuário.

"arquitetura da aplicação"

Esta é a estrutura de pastas proposta:

|-- core
    |-- [+] authentication
    |-- [+] guards
    |-- [+] http
    |-- [+] interceptors
    |-- [+] mocks
    |-- [+] services
    |-- [+] layout

|-- features
    |-- feature1
        |-- feature1-routing.module.ts
        |-- feature1.component.html
        |-- feature1.component.scss
        |-- feature1.component.ts
        |-- feature1.component.spec.ts
        |-- feature1.service.ts
        |-- feature1.module.ts

    |-- feature2 
        |-- [+] components
        |-- feature2-routing.module.ts
        |-- feature2.service.ts
        |-- feature2.module.ts

|-- shared
    |-- [+] components
    |-- [+] models
    |-- [+] directives
    |-- [+] pipes

|-- app-routing.module.ts
|-- app.component.html
|-- app.component.scss
|-- app.component.ts
|-- app.component.spec.ts
|-- app.module.ts

Core

O core module deve conter serviços singleton, componentes universais e outros recursos em que há uma instância única. Autenticação, header, interceptors são exemplos de componentes que terá apenas uma instância ativa para a aplicação e será utilizado praticamente por todos os modules.

Features - Módulos Lazy Loaded

Módulos lazy loaded ajudam a diminuir o tempo de inicialização da aplicação. Com o lazy load, o aplicativo não precisa carregar tudo de uma só vez. Ele só vai carregar o que o usuário espera ver. O módulo só irá carregar quando o usuário navegar para sua rota.

Observe que se o módulo de feature tiver mais de um componente, criamos sub-pastas para a cada componente (Ex. feature2) para que nenhuma pasta tenha mais de 6 arquivos conforme a recomendação do style guide do Angular.

Para gerar um novo módulo lazy loaded use a o schematic ng generate module com a flag --route. Por exemplo, para gerar uma nova rota /privacy:


ng g m features/privacy --route privacy --module app.module.ts

Shared

O shared é onde todos os componentes compartilhados, pipes, filters e services devem ir. O shared pode ser importado em qualquer module. Assim esses itens serão reutilizados. O shared module deve ser independente do restante do aplicativo. Portanto, não deve ter referências de outro módulo.

Referências

A estrutura é inspirada nas seguintes fontes:

Recursos

O seguintes recursos já estão implementados na aplicação starter. Para alguns dos recursos é necessário fazer uma configuração antes de utilizá-los.

Integração NGX Wiz SSO

Integração com NGX Wiz SSO. Um módulo Angular feito para facilitar processo de autenticação e renovação de token no SSO da Wiz.

Configuração SSO

Adicione as configurações de SSO do seu projeto aos arquivos da pasta src/environments.

ssoConfig: {
    apiPath: '<<urldo servico>>',
    clientID: '<<Cliente ID>>',
    clientSecret: '<<Cliente Secret>>',
    grantType: '<<Grant Type>>',
    authedPaths: ['<<dns a ser autenticado>>'],
    scope: '<<scope do projeto>>',
    options: {
      // parâmetro opcional
      ssoTimeOut: 60000, // parâmetro opcional, determina o timeout para o SSO
      tokenAutoRefresh: true, // parâmetro opcional, determina se o token deve ser renovado
      loginRoute: 'login', // url que aponta para onde redirecionar no caso de não haver token
    },

O módulo do NGX Wiz SSO está importado no CoreModule.

@NgModule({
  declarations: [MainLayoutComponent, NavComponent],
  imports: [
    BrowserModule,
    RouterModule,
    HttpClientModule,
    NgxWizSSOModule.forRoot(environment.ssoConfig), // <--- import do NGX Wiz SSO
  ],
  exports: [MainLayoutComponent, NgxWizSSOModule],
})
export class CoreModule {}

O componente login tem um botão de "Entrar" que exemplifica como usar o plugin. Para entender melhor as configurações consulte a documentação do projeto NGX Wiz SSO.

Monitoramento com Application Insights

Monitoramento de erros e de performance da aplicação Angular usando o Azure Application Insights.

Configuração Application Insights

Adicione sua chave de instrumentação ao arquivo de variáveis por ambiente:

export const environment = {
  production: true,
  appInsights: {
    instrumentationKey: 'YOUR-APPLICATION-INSIGHTS-INSTRUMENTATION-KEY',
  },
};

Commit lint

As mensagens de commit devem seguir a convenção de Conventional commits que é o padrão para todos os projetos da Wiz. Este projeto já tem commit lint configurado com husky para te ajudar. Consulte a convenção Angular se tiver dúvidas sobre o tipo correto para seu commit.

Configuração Prettier

O código gerado contem arquivos de configuração da ferramenta de formatação Prettier e cria dois scripts npm:

  "scripts": {
    "//": "...",
    "format:check": "prettier **/*.{html,ts,js,json,scss} --check",
    "format:write": "prettier **/*.{html,ts,js,json,scss} --write"
  },

ReCAPTCHA

Implementação de Google ReCAPTCHA na tela de login. Adicione a chave pública do seu projeto aos arquivos da pasta src/environments.

export const environment = {
  ...
  reCaptcha: {
    siteKey: 'YOUR-RECAPTCHA-KEY',
  },
};

CI/CD

O código gerado irá conter um arquivo azure-pipelines.yml com a configuração de integração contínua de de deploy da aplicação.

Desenvolvimento do schematic

Por onde começar

# Clonar o repositório
git clone [email protected]:wizsolucoes/angular-starter-schematic.git

# Entrar na pasta do schematic
cd angular-starter-schematic

# Instalar as dependências
npm install

# Buildar schematic
npm run build

# Executar os testes
npm test

Testando o schematic localmente

Para testar o schematic localmente, você pode gerar um distribuível do schematic, instalar como pacote em uma aplicação angular ou você pode executar o schematic referenciando o código fonte diretamente.

1. Gerando um distribuível do schematic

1a. Gere um distribuível do schematic

# Instalar as dependências
npm install

# Buildar schematic
npm run build

# Gerar tarball eg. wizsolucoes-angular-starter-1.0.1.tgz
npm pack

1b. Gere uma nova aplicação e instale e execute o schematic

# Gerar uma nova aplicação Angular em outra pasta para testar o schematic
ng new my-app --style=scss

# Entrar na pasta da nova aplicação
cd my-app

# Instalar o distribuível do schematic
npm i --no-save ../<path-to>/angular-starter-schematic/wizsolucoes-angular-starter-x.x.x.tgz

# Executar schematic
ng g @wizsolucoes/angular-starter:ng-add

2. Executando o schematic referenciando o código fonte

2a. Faça o build do schematic

# Instalar as dependências
npm install

# Buildar schematic
npm run build

2b. Execute com a CLI @angular-devkit/schematics-cli

(É preciso ter instalado a CLI com ng i -g @angular-devkit/schematics-cli)

# Gerar uma nova aplicação Angular em outra pasta para testar o schematic
ng new my-app --style=scss

# Entrar na pasta da nova aplicação
cd my-app

# Exeucutar o schematic com @angular-devkit/schematics-cli
schematics ../<path-to>/angular-starter-schematic/src/collection.json:starter

Aprenda mais sobre schematics