Migrate build-tools from gulp to native compilation

This commit is contained in:
Thomas Cazade 2020-08-25 07:32:00 +02:00
parent 6541844c71
commit 55b8ab41e1
4 changed files with 2056 additions and 4878 deletions

38
build/build.js Normal file
View file

@ -0,0 +1,38 @@
const path = require('path');
const sass = require('sass');
const chalk = require('chalk');
const write = require('write');
const rimraf = require('rimraf');
const postcss = require('postcss');
const cssnano = require('cssnano');
const autoprefixer = require('autoprefixer');
async function build() {
const entrypoint = path.resolve(__dirname, '../src/styles.scss');
console.log('📦', chalk.cyan('Starting PaperCSS build...'));
console.log('📦', chalk.cyan('Cleaning dist/ folder...'));
rimraf.sync('dist', { disableGlob: true });
console.log('📦', chalk.cyan('Compiling SCSS to CSS, entrypoint:', entrypoint));
const compiledCSS = sass.renderSync({ file: entrypoint });
console.log('📦', chalk.cyan('Applying autoprefixer and cssnano...'));
const autoprefixedCSS = await postcss([autoprefixer]).process(compiledCSS.css, { from: undefined });
const minifiedCSS = await postcss([cssnano]).process(autoprefixedCSS.css, { from: undefined });
const paperpath = path.resolve(__dirname, '../dist/paper.css');
const paperminpath = path.resolve(__dirname, '../dist/paper.min.css');
console.log('📦', chalk.cyan('Writing paper.css and paper.min.css files...'));
write(paperpath, autoprefixedCSS.css);
write(paperminpath, minifiedCSS.css);
console.log('📦', chalk.cyan('Build done!'));
}
build();

View file

@ -1,69 +0,0 @@
'use strict';
const gulp = require('gulp'),
sass = require('gulp-sass'),
cleanCSS = require('gulp-clean-css'),
rename = require('gulp-rename'),
exec = require('child_process').execFile,
optional = require('optional'),
hugo = optional('hugo-bin'),
gulpStylelint = optional('gulp-stylelint'),
autoprefixer = require('gulp-autoprefixer');
gulp.task('sass', function() {
return gulp.src('src/**/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(autoprefixer())
.pipe(cleanCSS({format: 'beautify'}))
.pipe(rename('paper.css'))
.pipe(gulp.dest('dist'))
.pipe(gulp.dest('docs/static/assets'));
});
gulp.task('watch', function () {
gulp.watch('src/**/*.scss', gulp.series('sass'));
});
gulp.task('hugo-server', function (cb) {
const flags = ['server', '--source=docs', '--disableFastRender'];
let hugo_process = exec(hugo, flags, function (err, stdout, stderr) {
console.log(stderr);
return err ? cb(err) : cb();
});
hugo_process.stdout.pipe(process.stdout);
return hugo_process;
})
gulp.task('hugo-build', function (cb) {
const flags = ['--source=docs'];
let hugo_process = exec(hugo, flags, function (err, stdout, stderr) {
console.log(stderr);
return err ? cb(err) : cb();
});
hugo_process.stdout.pipe(process.stdout);
return hugo_process;
})
gulp.task('minify-css', () => {
return gulp.src('src/**/*.scss')
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(rename('paper.min.css'))
.pipe(gulp.dest('dist'))
.pipe(gulp.dest('docs/static/assets'));
});
gulp.task('lint-css', function() {
return gulp.src('src/**/*.scss')
.pipe(gulpStylelint({
reporters: [
{ formatter: 'string', console: true },
],
}));
})
gulp.task('default', gulp.series('sass', 'minify-css', 'hugo-server'));
gulp.task('build', gulp.series('sass', 'minify-css', 'hugo-build'));
gulp.task('postinstall', gulp.series('sass', 'minify-css'));

6788
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -2,13 +2,14 @@
"name": "papercss",
"version": "1.7.0",
"description": "The less formal CSS framework.",
"main": "index.js",
"main": "dist/paper.css",
"scripts": {
"start": "node node_modules/gulp/bin/gulp.js",
"build": "node node_modules/gulp/bin/gulp.js build",
"test": "echo \"Error: no test specified\" && exit 1",
"postinstall": "gulp postinstall",
"stylelint": "node node_modules/stylelint/bin/stylelint.js 'src/**/*.scss'"
"build": "node ./build/build.js",
"hugo:build": "hugo -D --source=docs",
"hugo:serve": "hugo server --source=docs --disableFastRender",
"lint": "npm run stylelint",
"start": "npm run hugo:serve",
"stylelint": "stylelint 'src/**/*.scss'"
},
"repository": {
"type": "git",
@ -20,27 +21,13 @@
"url": "https://github.com/papercss/papercss/issues"
},
"homepage": "https://www.getpapercss.com",
"dependencies": {
"gulp": "^4.0.0",
"gulp-autoprefixer": "^6.0.0",
"gulp-clean-css": "3.9.0",
"gulp-connect": "^5.6.1",
"gulp-plumber": "1.1.0",
"gulp-rename": "1.2.2",
"gulp-sass": "^3.1.0",
"optional": "^0.1.4"
},
"devDependencies": {
"autoprefixer": "^9.8.6",
"browserify": "^14.1.0",
"chai": "^4.1.2",
"gulp-less": "^4.0.1",
"gulp-plumber": "1.1.0",
"gulp-rename": "1.2.2",
"gulp-sass": "^3.1.0",
"gulp-stylelint": "6.0.0",
"gulp-watch-less": "1.0.1",
"chalk": "^4.1.0",
"cssnano": "^4.1.10",
"http-server": "^0.11.1",
"hugo-bin": "^0.37.0",
"install": "0.10.1",
"jake": "^8.0.15",
"jshint": "^2.9.6",
@ -57,11 +44,14 @@
"npm": "^6.4.1",
"object-merge": "^2.5.1",
"os": "^0.1.1",
"postcss": "^7.0.32",
"pre-commit": "^1.2.2",
"procfile": "^0.1.1",
"quixote": "^0.14.0",
"request": "^2.83.0",
"requirejs": "^2.3.5",
"rimraf": "^3.0.2",
"sass": "^1.26.10",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"simplebuild-jshint": "^1.3.0",
@ -71,7 +61,8 @@
"stylelint-config-standard": "18.0.0",
"stylelint-order": "0.8.0",
"stylelint-scss": "2.2.0",
"webpack-dev-server": "^3.1.10"
"webpack-dev-server": "^3.1.10",
"write": "^2.0.0"
},
"pre-commit": [
"stylelint"