Giter Site home page Giter Site logo

bob's People

Contributors

cliffano avatar dependabot[bot] 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

Watchers

 avatar  avatar  avatar  avatar  avatar

bob's Issues

Add custom tasks support

Bob should bundle a set of predefined tasks + task types.
Some projects might have custom setup that only makes sense for that project. It will be handy if the custom tasks can be set up and used on userland, and should overwrite bundled defaults.

Add alias support

Bob needs to support alias targets, e.g. in .bob.json

{
"build": "clean lint style test coverage"
}

Note: not everyone wants to create aliases in .bashrc .

target suggestion / auto-completion

When user type 'bob c', Bob should suggest possible targets that start with c (coverage, complexity, etc)

Either auto-complete the command and cycle through the suggestion after each tab key press, or display a list of suggestions.

Change mode to support plain, parsable, and publishable

Rather than human and robot, it's better if mode (via BOB_MODE env) supports:

  • plain, for display on terminal/console, readable
  • parsable, which generates structured text for machine parsing, e.g. xml, json... this is nice for CI integration
  • publishable, which generates html pages, handy for publishing reports, e.g. to GitHub pages

Challenges: not all tools support all 3 options, not all tools support file creation, some writes to stdout directly, only few tools support multiple reporters, most just one reporter per execution.

Use npm shrinkwrap to lockdown sub dependencies

It's best to publish npm-shrinkwrap.json in Bob due to its reliance on various tools.

A problem that occurred in the past:

  1. Bob version 1 is published with dep X version 1.
  2. Users install Bob, everything works fine.
  3. Dep X version 1 contains a range dependency to dep Y.
  4. Dep Y is updated which breaks Bob.
  5. New users install Bob, bob is broken, even though it's still the same version that users in step 2 installed.

Skip installing task tools if it's already installed globally

shelljs' which function is useful to check whether the command already exists or not.
This would be handy for system where a tool is already globally installed, and multiple Bob versions don't need to reinstall the same tool over and over again.

Need to verify that shelljs' which works on Windows too.

Add multi target types support

Some targets need multi types, hence the current restriction of one type per target is not sufficient.
E.g. an artifact needs to be distributed to multiple destinations, some using scp, some using ftp.

Multi-deps support per task type

Some task types require multiple node modules to be installed, at the moment it is not possible due to the mapping between task type name to module name.

Keep coloured output for test target using mocha

node-madge's coloured output is kept intact when used via bob depgraph.
But mocha's coloured output is gone when used via bob test.
Need to investigate this and figure out a way for all tools to keep the coloured output.

Send should work cross-platform

Prior to Bob v0.6.0, send task uses *nix's scp and ftp.
They need to be replaced with node-based scp and ftp via CLI, configuration preferably independent of Bob's config, it should be the CLI tool's config.

Automatic detection of tool-specific configuration file

E.g. for a lint target using jshint tool, Bob should automatically use jshint config/settings file if one is present in the project's directory (same level as the project's package.json file)
This feature should be applicable to all tools which has a CLI flag for a custom config file.

Less .bob.json config to worry about, simpler for the user.

Force task type declaration

Bob currently supports default task type, e.g. default test is mocha.
Default task type won't stay forever as libraries come and go, something becomes popular, then someday might be unmaintained.
When Bob changes the default task type in a new version, that will break module that rely on the previous default task type. This is not only annoying, but also discourage Bob upgrade.

It's better to enforce modules to declare task types in .bob.json file, and Bob should fail fast if a task is called but the type is not declared.

Add target to validate json

Many apps include json config files. It'll be handy if there's something like bob jsonlint that automatically validates all json files in the project.

Shell command support on custom targets

From time to time, there could be edge cases which are not covered by Bob (e.g. need to run non-node tools). It will be convenient to be able to specify shell command as a custom Bob target in .bob.json file.

Add cluster command

Investigate the use of pm2 module to cluster an app, specify a location of the start JS as a convention.

Fix updep

Updep defaults registry URL to https and also doesn't handle http proxy environment variables. These should be configurable.

Updep could be extracted to a separate module, if there's no module that does it already.

Include debug message when installing optDependencies

When optional dependencies installation fails, there's currently no additional information other than failure with a non-zero exit code.

Add canihaz debug setting so more information will be logged to console output.

Don't forget to disable the debugging when Bob --quiet flag is set.

Install unique dependencies

Bob currently doesn't handle unique dep modules installation correctly.

e.g. buster module is installed twice below
[deps] Installing modules: buster, buster-istanbul, buster (might take a while, once-off only)

Add bob version requirement

In .bob.json, allow bob version range requirement a la npm.

If this config existed, Bob should check for the version first prior to running the tasks.

Config from command line

bob set lint.type nodelint
should ensure that .bob.json has
"lint": { "type": "nodelint" }

bob alias build "lint test coverage"
should ensure that .bob.json has
"build": "lint test coverage"

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.