Angular 1, Gulp, Webpack, ESLint, Karma/Jasmine
Un generador es, en su núcleo, un módulo Node.js
1.- Instalar globalmente Yeoman
npm install -g yo
2.- Instalar globalmente generator-generator
npm install -g generator-generator
3.- Crear y accesar a directorio:
mkdir anzdig-aw-es6 && cd anzdig-aw-es6
4.- Generar un generator:
yo generator
? Your generator name generator-anzdig-aw-es-6 Your generator must be inside a folder named generator-anzdig-aw-es-6 I'll automatically create this folder. ? Description Angular 1, webpack 2, ECMAScript 6, Babel ? Project homepage url https://lenin-anzen.github.io/generator-anzdig-aw-es6 ? Author's Name Lenin Meza ? Author's Email lmeza@anzen.com.mx ? Author's Homepage https://travis-ci.org/lenin-anzen ? Package keywords (comma to split) yeoman,generator,angular,webpack,es6,babel ? Send coverage reports to coveralls Yes ? GitHub username or organization lenin-anzen ? Which license do you want to use? MIT create package.json create README.md create .editorconfig create .gitattributes create .gitignore create generators\app\index.js create generators\app\templates\dummyfile.txt create __tests__\app.js create .travis.yml create .eslintignore create LICENSE
5.- Deshabilitar bower
@file generator-anzdig-aw-es6/generators/app/index.js
@line 33
install() {
this.installDependencies({bower: false});
}
6.- Enlazar generador
cd generator-anzdig-aw-es6
npm link
7.- Verificar enlace:
npm ls --global generator-anzdig-aw-es6
8.- Probar el generador :
cd ..
mkdir test1 && cd test1
yo anzdig-aw-es6
_-----_ ╭──────────────────────────╮ | | │ Welcome to the │ |--(o)--| │ impressive │ `---------´ │ anzdig-aw-es6 │ ( _´U`_ ) │ generator! │ /___A___\ /╰──────────────────────────╯ | ~ | __'.___.'__ ´ ` |° ´ Y ` ? Would you like to enable this option? Yes create dummyfile.txt
Los siguientes métodos se ejecutan de manera secuencial:
initializing
- Your initialization methods (checking current project state, getting configs, etc)prompting
- Where you prompt users for options (where you'd call this.prompt()
)configuring
- Saving configurations and configure the project (creating .editorconfig
files and other metadata files)default
- If the method name doesn't match a priority, it will be pushed to this group.writing
- Where you write the generator specific files (routes, controllers, etc)conflicts
- Where conflicts are handled (used internally)install
- Where installations are run (npm, bower)end
- Called last, cleanup, say good bye, etcSe pueden agregar métodos custom, éstos se agregarán al método "default"
class MyGenerator extends Generator { initializing() { this.foo = 'bar'; } getFoo() { console.log( this.foo ); } }
Al ejecutar el comando npm test
se realiza lo siguiente:
Comprobación de seguridad con Node Security Platform command-line tool"
Comprobación de sintaxis con ESLint
Pruebas unitarias con Jest
Las pruebas hacen uso de:
helpers.run(path.join(__dirname, '../app'))
.inTmpDir(function (dir) {
fs.copy(path.join(__dirname, '../templates/common'), dir, done);
})
.withPrompts({ coffee: false });
assert.file('templates/user.hbs');
assert.fileContent('models/user.js', 'App.User = DS.Model.extend');
Instalar el siguiente generador:
1.- Instalar Yeoman y Webpack globalmente:
npm install -g yo webpack
2.- Instalar generador globalmente:
npm install -g generator-angular-webpack-es6
3.- Crear directorio y acceder a él:
mkdir awesome-project && cd awesome-project
4.- Mediante Yeoman iniciar generador:
yo angular-webpack-es6
_-----_ ╭──────────────────────────╮ | | │ Welcome to the great │ |--(o)--| │ angular-webpack-es6 │ `---------´ │ generator! │ ( _´U`_ ) ╰──────────────────────────╯ /___A___\ / | ~ | __'.___.'__ ´ ` |° ´ Y ` ? Your application name (myNgApp) awesome-app
La propiedad "name" debe tener el prefijo "generator-"
La propiedad "keywords" debe contener "yeoman-generator"
La propiedad "files" debe contener la lista de archivos usados.
Debe tener como dependencia la última versión de "yeoman-generator"
{
"name": "generator-name",
"version": "0.1.0",
"description": "Description of the generator",
"files": [
"generators"
],
"keywords": ["yeoman-generator"],
"dependencies": {
"yeoman-generator": "^1.0.0"
}
}
Debe contener un archivo llamado .yo-rc.json, el cual se considera que, en donde se encuentre, será la raíz del proyecto.
Para más información sobre cómo publicar un paquete en NPM: Publicación de Paquetes.
1.- Clonar el repositorio donde se encuentra el generador:
git clone https://github.com/anzen/generator-anzdig-webapps-training
2.- Accesar e instalar dependencias:
cd generator-anzdig-webapps-training
npm install
3.- Enlazar el generador a los paquetes locales de NPM:
npm link