josephg / ShareJS

Collaborative editing in any app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Use Grunt instead of Make

dignifiedquire opened this issue · comments

Follow up of #267 regarding Grunt

I'm a bit confused regarding the usage of Grunt as it is already used at the moment for running the tests. I think having Grunt and Make is very inefficient. So there should be a decision for either one.
Personally I don't mind keep using Make but I have to say everyone who tries to do some development on a windows box is effectively screwed when they have to use Make so I think this is a clear benefit that Grunt has over Make. (I know there are ways to execute makefiles on windows but it's painful and if one dependency is missing you are back at square one)

I hate grunt - I think it encapsulates the worst parts of xml, and I write javascript for a reason.

I'd be happy to move to gulp though. Gulp looks sweet.

I would strongly recommend to stay with Make. Make is the only tool that properly understands when not to run a task, since Make is primarily file-based and not task-based. Make is powerful because you can use shell scripting more easily than with other tools.

Make has a bad rep because of its syntax (which I agree is clunky), but it is the best build tool. Every new cutesie build tool seems to optimise for syntax while missing out on the actual features. Or they reinvent the wheel. Node streams are cool, but using it in a build system is hardly novel. Make has has that for 40 years. It's called |.

Fair. The one downside of make is that its basically impossible to use from windows, though I still don't know any serious node developers who use windows.

I still don't know any serious node developers who use windows.

They are out there and I know from experience that it's not always a choice.

People can still use sharejs; they just can't edit & build it on windows. Fixing this isn't a high priority.

In order to allow Windows users to use ShareJS, Make should not be an installation requirement. It currently is, because you need Make to generate the webclient. npm install should make sure everything is there, and it should not invoke make to get there.

When switching to browserify people can easily build the web client using that independent of make.

make webclient is included as a prepublish step, so the npm bundle will include the webclient *.js files. npm install should work already from windows. That said, we have a build step in the package.json - that might break an install on windows. I assume someone will file a bug if its broken - I don't have a windows dev machine to test on.

I now have a build system that I like even more than make (which is a lot). Its tup. Tup will only rebuild files when dependancies change (like make). Unlike make, it does so intelligently (it tracks which files your build script reads so it knows what the real dependancies are). It also works on windows.

I'm not moving sharejs to grunt. Closing issue.