This PR is heavily WIP, but addresses a growing concern I've had with developing Bootstrap—the build process is way to convoluted. Currently we make use of Grunt, npm, Bundler, Jekyll, etc all just to run our docs and compile source assets. More personally, I find the current dev process incredibly fatiguing—as a maintainer, it's hard to be motivated to jump into this codebase right now.
My goal here is to overhaul the build process and make Bootstrap development more approachable to everyone (myself included). Originally I was thinking Gulp would be our answer, but it's still a task runner build on npm rather than npm itself.
So far I've started to pull apart a few bits of our current tooling and replacing them with npm scripts. Right now they all live under tasks/
and are split by dist/
and docs/
. I'm probably doing a ton wrong, but maybe you can help with that :D.
Here's the list of tasks we need for developing and distributing Bootstrap:
-
CSS -
Lint Sass before trying to compile (with stylelint
overscss-lint
) -
Compile Sass files with node-sass (no more Ruby options) -
Compile and minify Sass files -
Autoprefixer compiled CSS files
-
-
JavaScript -
Babel -
Uglify -
Qunit tests -
Concatenate and minify
-
-
Docs/development -
Update version -
Shrinkwrap dependencies -
Lint HTML files -
Run Jekyll and watch Sass/JS files (stylelint, compile, autoprefixer) -
Saucelabs? -
Package dist files in zipfile for release -
Deploy Jekyll _site
directory to remote to update docs site
-
I'm probably missing some tasks/scripts we need, but I do believe we need the above. These tasks should be runnable by us as maintainers, as well as casual users who wish to extend Bootstrap's code and docs, so I want them to be clear, concise, and documented.
/cc @twbs/team