Topic: The ideal assembly and

What you see to yourselves ideal process of the assembly-testing-start-deploja of a web service? We assume, we have a Web server written on Node.js. As the manager of packets it is used npm, and as assembly system - Gulp.  it is written on JS and uses Bower for control of dependences. What steps are necessary for doing for start of the efficient version from source codes: to Install Node.js to Install dependences npm and Bower' to Run tests () to "Minimize" JS and CSS files, to compress images and other to Launch a Web server the First question - what of these , in your judgement, should carry out immediately build system, and why? I suggest to walk on points. The first step (setting Node.js) anyway dares the user (setting from exe / msi / apt-get / etc), it is not necessary to lay it to system of the assembly. The second step (setting of dependences npm and Bower') can already dare as assembly system (in this case Gulp), and again to lay down on shoulders of the user. It would Seem, the first variant is more preferable (the information on specific managers of packets) but then we should ask to deliver separately the user Gulp (npm install gulp) at least is in that case incapsulated that anyway breaks the encapsulation mentioned as plus. Tests the assembly system almost unambiguously should incur. Let the user causes "gulp test" and not  on a subject of that in upcoming versions test framework will be replaced with Mocha on any Expresso. Minimization JS and CSS files too unambiguously is the task of system of the assembly (otherwise the user should know too many details of implementation). Web server start, on the contrary, purely task of the user. Gulp the user - start of that Gulp  is engaged in the assembly. The second question consists in level . For example, setting of dependences optionally should "stick out" outside, it can quite be  a script from package.json: "scripts": {"install-deps": "npm install && bower install"}, which user will launch on command performance "npm run install-deps". Or in case of usage Gulp' in the project npm directly - anyway , also it is necessary to tell maneuvering by the user to the user to do "gulp install-deps"? How much strongly it is desirable to "fence" the user from npm aside Gulp? Well and at last, advise any public repositories with competent structure of all this business.