cliffano / bob Goto Github PK
View Code? Open in Web Editor NEWMinimalist-omakase build tool for node.js projects
License: MIT License
Minimalist-omakase build tool for node.js projects
License: MIT License
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.
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.
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.
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.
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)
Some apps need custom pre and post steps before and after executing a task.
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.
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 updep target which should automatically upgrade all dependencies and devDependencies to latest versions published into npm registry.
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 .
Use something like https://github.com/pahen/node-madge to generate the dependency graph.
Rather than human and robot, it's better if mode (via BOB_MODE env) supports:
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.
Investigate the use of pm2 module to cluster an app, specify a location of the start JS as a convention.
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.
To help user with easily identifying Bob result status, colourise
success -> green
failure -> red
Bob currently doesn't display any activity indicator when installing optional deps which might take few minutes. Displaying something like a CLI spinner will help with informing the user that there's an ongoing activity.
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.
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.
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.
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.
It's best to publish npm-shrinkwrap.json in Bob due to its reliance on various tools.
A problem that occurred in the past:
bob list
should list all tasks available
bob list
should list all types available for the task
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.
Use dox-foundation https://github.com/punkave/dox-foundation as a start.
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"
Use something like https://github.com/yahoo/node-crank .
Nodeunit is popular. Bob needs to have a built-in support for nodeunit.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.