Giter Site home page Giter Site logo

generator-element's Introduction

Yeoman Generator
for Custom Elements

NPM version NPM downloads Build Status Dependency Status

WC + Yeoman

A Yeoman Generator that provides a functional boilerplate to easily create Custom Elements using Polymer, X-Tag or VanillaJS.

All templates are based in the boilerplates authored by the WebComponents.org team:

Install

Install this generator using NPM:

[sudo] npm install -g generator-element

Getting Started

ScreenShot

There are two different generators available.

  • The first one used to scaffold out new individual elements:
yo element
[?] What do you want to use?
[?] What's the name of your element?
[?] Do you want to include lifecycle callbacks?

Which will generate the following file:

.
└── my-element.html
  • The second one is used to scaffold an entire project:
yo element:repo
[?] What do you want to use?
[?] What's the GitHub repository?
[?] What's your GitHub username?
[?] What's the name of your element?
[?] How would you describe the element?
[?] Do you want to include lifecycle callbacks?
[?] Do you want to include some useful Grunt tasks?

Which will generate the following project structure:

.
├── .editorconfig
├── .gitignore
├── bower.json
├── package.json
├── index.html
├── Gruntfile.js
└── src/my-element.html

And run bower install & npm install for you to fetch all dependencies.

Note: files will be generated in the current directory, so be sure to change to a new directory before running those commands if you don't want to overwrite existing files.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -m 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

History

For detailed changelog, see Releases.

Team

This project is maintained by these people and a bunch of awesome contributors.

Zeno Rocha | Addy Rocha --- | --- | --- | --- | --- Zeno Rocha | Addy Osmani

License

MIT License © WebComponents.org

generator-element's People

Contributors

addyosmani avatar arthurvr avatar kentliau avatar obetomuniz avatar pawndev avatar robdodson avatar sindresorhus avatar wisehackermonkey avatar zekenie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

generator-element's Issues

Tests can't create expected files

I'm getting this error when trying to create files in my tests:

  1) element generator creates expected files:
     Error: EISDIR, illegal operation on a directory
      at Object.fs.readSync (fs.js:476:19)
      at Object.fs.readSync (/Users/zeno/Projects/generator-element/node_modules/mocha/node_modules/glob/node_modules/graceful-fs/polyfills.js:218:23)
      at module.exports (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/isbinaryfile/index.js:14:17)
      at _prepCopy (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/actions/actions.js:50:16)
      at copy (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/actions/actions.js:83:19)
      at yeoman.generators.Base.extend.files (/Users/zeno/Projects/generator-element/app/index.js:59:14)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:341:43
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:551:21
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:227:13
      at iterate (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:134:13)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:145:25
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:229:17
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:556:34
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:327:11
      at Conflicter.<anonymous> (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/util/conflicter.js:74:5)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:232:13
      at async.eachSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:130:20)
      at _asyncMap (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:226:9)
      at Object.mapSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:216:23)
      at Object.async.series (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:549:19)
      at Conflicter.resolve (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/util/conflicter.js:67:9)
      at done (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:322:25)
      at null.<anonymous> (/Users/zeno/Projects/generator-element/app/index.js:42:13)
      at generator.prompt (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/test/helpers.js:186:5)
      at yeoman.generators.Base.extend.askFor (/Users/zeno/Projects/generator-element/app/index.js:37:14)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:341:43
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:551:21
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:227:13
      at iterate (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:134:13)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:145:25
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:229:17
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:556:34
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:327:11
      at Conflicter.<anonymous> (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/util/conflicter.js:74:5)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:232:13
      at async.eachSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:130:20)
      at _asyncMap (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:226:9)
      at Object.mapSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:216:23)
      at Object.async.series (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:549:19)
      at Conflicter.resolve (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/util/conflicter.js:67:9)
      at done (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:322:25)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:344:9
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:551:21
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:227:13
      at iterate (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:134:13)
      at async.eachSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:150:9)
      at _asyncMap (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:226:9)
      at Object.mapSeries (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:216:23)
      at Object.async.series (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/async/lib/async.js:549:19)
      at run (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/base.js:349:9)
      at Context.<anonymous> (/Users/zeno/Projects/generator-element/test/test-creation.js:35:18)
      at Test.Runnable.run (/Users/zeno/Projects/generator-element/node_modules/mocha/lib/runnable.js:196:15)
      at Runner.runTest (/Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:374:10)
      at /Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:452:12
      at next (/Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:299:14)
      at /Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:309:7
      at next (/Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:247:23)
      at /Users/zeno/Projects/generator-element/node_modules/mocha/lib/runner.js:271:7
      at done (/Users/zeno/Projects/generator-element/node_modules/mocha/lib/runnable.js:185:5)
      at /Users/zeno/Projects/generator-element/node_modules/mocha/lib/runnable.js:199:9
      at Context.<anonymous> (/Users/zeno/Projects/generator-element/test/test-creation.js:21:13)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/lib/test/helpers.js:169:5
      at CB (/Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/rimraf/rimraf.js:42:5)
      at /Users/zeno/Projects/generator-element/node_modules/yeoman-generator/node_modules/rimraf/rimraf.js:118:7
      at Object.oncomplete (fs.js:107:15)



npm ERR! Test failed.  See above for more details.
npm ERR! not ok code 0

Any ideas @eddiemonge?

Change main generator command

There are two generators in this repo (one to scaffold the entire app and another to scaffold an individual element):

  • yo element:app
  • yo element:elements

Both were created using yeoman.generators.Base.extend() because I didn't wanted a generator that is named based. The problem is when you just run yo element it starts the yo element:app generator. We need to change this, so yo element would run yo element:elements.

I tried to change the main key on package.json file but nothing happened. Tests are also failing now.

Add tests for the GitHub Repo prompt

We need to figure out a way to test it separated. Because this.async() doesn't exist in this context (see function implementation).

Check the test (that was not commited) above:

describe('github repo', function () {
    it('cannot be blank', function () {
        var actual = validator.githubRepo(''),
            expected = validator.ERR_GITHUB_REPO_BLANK;

        assert.equal(actual, expected);
    });

    it('cannot exist on Bower', function () {
        var actual = validator.githubRepo('jquery'),
            expected = validator.ERR_BOWER_PKG_EXISTS;

        assert.equal(actual, expected);
    });

    it('is valid', function () {
        var actual = validator.githubRepo('my-element'),
            expected = true;

        assert.equal(actual, expected);
    });
});

NPM publish permissions

Hey @addyosmani, can you add NPM publish permissions for me?

npm ERR! Error: forbidden user: zenorocha not authorized to modify generator-element

Error when tried to create a element:repo

After asking for the github path the generator exit with this error:

/usr/local/lib/node_modules/generator-element/repo/index.js:65
if (!available.bower) {
^
TypeError: Cannot read property 'bower' of undefined
at /usr/local/lib/node_modules/generator-element/repo/index.js:65:35
at /usr/local/lib/node_modules/generator-element/node_modules/pkg-name/index.js:25:4
at callback (/usr/local/lib/node_modules/generator-element/node_modules/pkg-name/node_modules/each-async/index.js:33:4)
at /usr/local/lib/node_modules/generator-element/node_modules/pkg-name/node_modules/each-async/node_modules/onetime/index.js:20:12
at /usr/local/lib/node_modules/generator-element/node_modules/pkg-name/index.js:16:5
at ClientRequest. (/usr/local/lib/node_modules/generator-element/node_modules/pkg-name/node_modules/npm-name/index.js:13:4)
at ClientRequest.g (events.js:180:16)
at ClientRequest.emit (events.js:95:17)
at Socket.socketErrorListener (http.js:1551:9)
at Socket.emit (events.js:95:17)

ReferenceError: log is not defined

Hi, I am getting this error when i use x-imageload for the name of the element, I already tried other names and works fine.
am I doing something wrong?

[?] What do you want to use? Polymer
[?] What's the GitHub repository? x-imageload
[?] What's your GitHub username? viniciusdacal
[?] What's the name of your element? (my-element) x-imageload

/usr/local/lib/node_modules/generator-element/repo/index.js:87
log.info(result.message);
^
ReferenceError: log is not defined
at Object.prompts.validate (/usr/local/lib/node_modules/generator-element/repo/index.js:87:21)
at Object.utils.runAsync (/usr/local/lib/node_modules/yo/node_modules/yeoman-generator/node_modules/inquirer/lib/utils/utils.js:36:22)
at Prompt.validate (/usr/local/lib/node_modules/yo/node_modules/yeoman-generator/node_modules/inquirer/lib/prompts/base.js:137:9)
at Prompt.onSubmit (/usr/local/lib/node_modules/yo/node_modules/yeoman-generator/node_modules/inquirer/lib/prompts/input.js:72:8)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at Interface.rl._ttyWrite (/usr/local/lib/node_modules/yo/node_modules/yeoman-generator/node_modules/inquirer/node_modules/readline2/index.js:102:15)
at ReadStream.onkeypress (readline.js:99:10)
iMac-de-Marco:~ Apps$

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.