Git Product home page Git Product logo

roots's Introduction


Coverage Status

Roots is a fast, simple, and customizable static site compiler.

โš ๏ธ WARNING: Roots is currently in maintenance mode. It's not under active development and no new features will be added. The team behind roots is now working on spike, which has already matched and superseded roots' capabilities. We'd encourage you to check it out if you're starting a new project!

Why should you care?

If you make a lot of websites, or perhaps even make websites as a profession, there's no doubt that you will want to be very efficient at making websites, and on top of that you'll probably want to have the websites you make be very fast, cheap to host, and simple to build and optimize. If this is the case for you, my friend, you have come to the right place - roots is what you are looking for.

Roots is a tool for web developers to build static sites very quickly. Now, this doesn't mean that it's reserved only for websites without a server -- roots is also set up to be able to work very smoothly with client-side mv* frameworks like backbone or angular, and compliments them very well.

Roots is completely transparent, and is behind many large websites in production. It is sponsored heavily by carrot creative, has been under active development for almost 2 years, and is very actively maintained and developed to this day. In short, you can rely on roots.

Roots is certainly not the only static site compiler out there. But in our opinion, it's the most powerful and easiest to use. Give it a shot and see for yourself!

Installation

npm install roots -g - if you get an EACCES error, check here

Usage

See the docs for more info. You can also find a number of tutorial videos here.

Support

You can get support for and talk about roots in our gitter chatroom. Community, yay!

License & Contributing

roots's People

Contributors

adamkiss avatar aendra-rininsland avatar andyshora avatar axelboc avatar benadamstyles avatar bosgood avatar dapetcu21 avatar def0e0 avatar denis-sokolov avatar fricze avatar greenkeeperio-bot avatar hhsnopek avatar i8ramin avatar jescalan avatar joshrowley avatar jpsull avatar knupska avatar kylemac avatar l8d avatar notslang avatar nporteschaikin avatar paulmillr avatar samccone avatar severeoverfl0w avatar sourcehunter avatar synj24 avatar zspecza 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  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

roots's Issues

Error on comand "compile"

When compiling the project takes off error

compiling project... 
minifying & compressing...
WARN: Dropping unused function argument e [null:652,22]
WARN: Dropping unused variable $active [null:677,10]
WARN: Dropping unused function argument that [null:913,27]
WARN: Dropping unused variable that [null:857,12]
WARN: Dropping unused variable that [null:927,12]
WARN: Dropping unused variable that [null:1178,10]
WARN: Dropping unused function argument event [null:1800,22]
WARN: Dropping unused function argument event [null:1870,20]
WARN: Dropping unused function argument event [null:1881,20]
WARN: Dropping unused function argument e [null:1978,20]
Please check the validity of the CSS block starting from the line #58

but the 'watch' project is working fine.

Any changes to a stylus file are not effective.

only recompile the files that are needed

so I think this would involve knowing what type of file was modified

be it JS .. CSS .. or HTML

from there we crawl the tree and only recompile related assets

via @rmnvrmnvrmnv

File watcher reloads twice

Every time a reload is sent through it, it reloads the page twice. This is probably because it has a foreach directory loop.

Custom FTP Deploys

It will be easy enough to have the roots deploy command deploy the app to heroku, but what would be even more awesome would be to also allow a deploy via ftp to your own server. We could just ask for ftp info to be entered into a separate file which would be gitignored and pulled into the app config.

This library looks like a great start: https://github.com/mscdex/node-ftp

Compilers need error handling

Currently they silently fail if you have a syntax error. Not hard to change, I just have to remind myself to actually do it...

add man pages

Totally jacked this from yeoman, but it's a great idea. We can use this project to make a little set of manpages.

maybe not port 3000

lets detect if 3000 is open.. if not lets use another port

typically i have a few servers running at a time :)

and 3000 is pretty typical for rails

Do not watch components folder

It seems the watcher gets inundated with the files generated by roots js install .... Make sure the watcher doesn't watch the bower-generated js/components folder

NOTE:

This was tested after installing jquery-ui

ERROR OUTPUT:

    fs.js:837
        throw errnoException(errno, 'watch');
              ^
    Error: watch EMFILE
      at errnoException (fs.js:806:11)`

Design for docs

I've been working on a design for the upcoming docs site. I'm thinking roots.cx, which is available. This is how it's looking so far, simple and fresh. Any thoughts?

v1

Error 'roots js install'

Error install

roots js install bootstrap-js
bower cloning git://github.com/arhea/bower-bootstrap-js
bower cached git://github.com/arhea/bower-bootstrap-js
bower fetching bootstrap-js

/usr/local/lib/node_modules/roots/node_modules/bower/node_modules/tmp/lib/tmp.js:219
    throw err;
          ^
Error: status code of git: 127
    at ChildProcess.module.exports (/usr/local/lib/node_modules/roots/node_modules/bower/lib/util/spawn.js:27:17)
    at ChildProcess.EventEmitter.emit (events.js:99:17)
    at Process._handle.onexit (child_process.js:678:10)

let npm deal with package management

If roots is available on npm, why not deprecate the curl roots.cx/get | sh command? Also, for a similar reason, the roots update command could be removed in favor of using npm update roots.

Relying more on npm could remove a little of the complexity of this project, and hopefully provide a more standard interface for people used to working with node.js.

Which languages should we support?

I'm thinking about removing haml, because why would you use it when you have jade - they are the same type of concept. In ruby, almost everyone uses haml or erb for view templates, and here we have jade and ejs, which are essentially the same thing but javascript equivalents.

Looking at tilt, there are a lot of shenanigans types of templates in here that would hardly be used for a project structure like this. I'm a big fan on the default jade, stylus, coffee stack, but I know some people are in to different styles.

I think ejs is a good addition, I think less would be a good one (for people who like css with brackets and semis) - after that i'd call it a day - we'd have both whitespace dependent and more terse languages and non-ws-dependent and slightly more explicit languages for both css and html.

Better Tests

There is some test coverage here, but it needs to be a lot more complete. Put in work son.

Roots can't detect Heroku

I installed Heroku on my Windows.
However, whenever I use the command roots deploy, it keeps saying that I need to install Heroku first.

Layouts and Partials

Just wanted to open this up to write down slash bounce around ideas for how this functionality will be handled.

Partials are built in to jade and ejs, who knows for haml. I'm probably going to get rid of haml anyway, it's not really necessary for this framework. The only reason I have it in there at all is for possible template conversion to rails if someone decided later that they wanted dynamic functionality. I feel like it's probably not worth it though, conversion would be quick.

I have layouts built into the jade compiler and the default layout is working fine, although I don't have it set up for individual overrides yet, and layouts aren't working for anything other than jade at the moment. It should be pretty easy to port it in, but in the process of setting this up I realized that the compilers need a big time refactor - mainly I want to superclass the template methods that are repeated across all compilers, and possibly make some distinction between view and asset compilers, as the view compilers take on the additional responsibility of rendering layouts etc. So next on the list for me is a major refactor (once again) to the compile project file then to all the compiler files.

Either way, what I wanted to bring up here was how we should handle layouts. For example, do we invent out own syntax for straight html layouts, or require jade or ejs because they are templating languages? Since ejs is written in pure html, it's not like there's any reason not to just use that, but with the extra tag for yield. I doubt anyone would honestly use a framework like this and write in mainly straight html, css, and js anyway. Also, should we allow multiple templating languages to be used at the same time? If this is the case, it would make things a little more difficult from the layout perspective, as cross-compiling would have to happen. I'm thinking maybe when you start the project you would be able to use either the default or another specified stack and you'd have to stick with that.

Ok that's enough out of me here...

Mix layout templating languages

So technically it seems feasible that you could have a layout in one language and have a file in another language compile into it. The question is, is this worth doing?

UglifyJS throws an error on compile of blank project

I'm not going to say this is definitely a bug in uglifyjs, but the stack trace is complete unhelpful, meaning I'll probably have to do neuro-style debugging to find out which line is causing this issue. Not critical, as everything still appears to be compiling, but should be taken care of.

/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:206
        self.consequent = self.consequent.transform(tw);
                                      ^
TypeError: Cannot call method 'transform' of null
    at /usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:206:43
    at Object.merge.before (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/compress.js:88:9)
    at AST_Node.transform (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:62:20)
    at /usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:128:49
    at Object.merge.before (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/compress.js:88:9)
    at AST_Node.transform (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:62:20)
    at AST_Node.optimize (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/compress.js:115:24)
    at Object.merge.before (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/compress.js:89:21)
    at AST_Node.transform (/usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:62:20)
    at /usr/local/lib/node_modules/roots-static/node_modules/uglify-js2/lib/transform.js:137:31

Create a plugin for compass

Compass is generally a pain in the ass to integrate into other things, since it is essentially its own build system. But a lot of people love it anyway, and I'd like to have a plugin that integrates it in as straightforward a way as possible.

Really, i think this is what we're after, but I wouldn't be surprised if this needed some extra work and system integration, especially for things like sprites: https://github.com/chriseppstein/compass/tree/stable/frameworks/compass

rounded corners

Is there a global setting for rounded corners or a utility for removing/adjusting them?

watcher doesn't pull in new files

If you add a file to the project while watching, the file is ignored until you restart the watcher. If there's any way we could get the watcher to pull in new files, that would be incredible.

Suggestion: Switch to dom-based building

Would you guys be interested in testing out dom-based building?

I have been workign on assetgraph for a while. It's a project that tries to model web assets for web performance optimization. The concept of it is that the placement of files in the file system is irrelevant. Instead it parses the assets to find and populate dependencies from them. Pretty much like the browser does.
This give you a lot cleaner code, since you don't have to annotate for the build system, and the build system doesn't need a lot of configuration for where the files are.

If you are interested I could try and see if I can fit assetgraph-builder into your project.

You can read more about it here: https://github.com/One-com/assetgraph-builder

Add require.js to template

Require.js is really the best way to manage javascript dependencies on the client side. It would be very simple to integrate this into the roots new template, and this should be done.

Add some sort of plugin interface

It would be pretty cool to allow people to quickly and easily add in their own compilers or maybe other plugins. I don't really know how we'd do this or what other plugins besides compilers could be added, but it would be pretty awesome.

A couple examples of what I'm thinking

  • if someone wants it, a compiler for haml
  • a system that parses tumblr tags and generates sample data so you could use this to generate tumblr themes
  • a plugin that would add compass and sass support

It would be great to have an easy way to install these and make functionality available. This way we could also keep the core super clean and enhance it quickly by mixing in modules of extra functionality if/when we need them.

make error message fixes

if you are scrolled down a page and then you get an error on livereload the error message is still at the top of the page.. thus you can not see the error

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.