Commit beb81fde authored by Vadym Gidulian's avatar Vadym Gidulian

Initial commit

parent f6dddbfd
dist/
# Dependency directories
node_modules/
......
......@@ -6,13 +6,8 @@ test:
script:
- node -v
- npm -v
- npm install
- npm start
- rm -rf .git .gitignore .gitlab-ci.yml
- rm -rf node_modules bs-config.json gulpfile.js package.json
- rm -rf $GVIA_TEST_DIR/$PROJECT_NAME
- mkdir -p $GVIA_TEST_DIR/$PROJECT_NAME
- cp -a ./ $GVIA_TEST_DIR/$PROJECT_NAME/
- npm run build
- rsync -rv --delete dist/ $GVIA_TEST_DIR/$PROJECT_NAME/
only:
- dev
demo:
......@@ -20,12 +15,7 @@ demo:
script:
- node -v
- npm -v
- npm install
- npm start
- rm -rf .git .gitignore .gitlab-ci.yml
- rm -rf node_modules bs-config.json gulpfile.js package.json
- rm -rf $GVIA_DEMO_DIR/$PROJECT_NAME
- mkdir -p $GVIA_DEMO_DIR/$PROJECT_NAME
- cp -a ./ $GVIA_DEMO_DIR/$PROJECT_NAME/
- npm run build
- rsync -rv --delete dist/ $GVIA_DEMO_DIR/$PROJECT_NAME/
only:
- master
{
"server": {
"baseDir": "dist"
},
"watchOptions": {
"ignored": [
"css/**/(?!style.all.min)*.css",
"js/**/(?!script.all.min)*.js",
"less",
"src",
"node_modules"
]
}
......
var browserify = require('browserify');
var del = require('del');
var source = require('vinyl-source-stream');
var gulp = require('gulp');
var less = require('gulp-less');
var nano = require('gulp-cssnano');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var concat = require('gulp-concat');
var replace = require('gulp-html-replace');
var noop = require('gulp-empty');
var htmlMin = require('gulp-htmlmin');
var del = require('del');
var less = require('gulp-less');
var rename = require('gulp-rename');
var streamify = require('gulp-streamify');
var uglify = require('gulp-uglify');
var failSafe = false;
var production = true;
function shallow(done) {
return function (error) {
......@@ -17,77 +21,59 @@ function shallow(done) {
}
var paths = new function() {
this.htmlDir = '.';
this.html = this.htmlDir + '/*.html';
this.htmlOut = this.htmlDir;
this.cssDir = 'css';
this.css = [
this.cssDir + '/**/*.css',
'!' + this.cssDir + '/**/*.min.css'
];
this.cssOut = this.cssDir;
this.srcDir = 'src';
this.distDir = 'dist';
this.jsDir = 'js';
this.js = [
this.jsDir + '/**/*.js',
'!' + this.jsDir + '/**/*.min.js'
// Files to be copied to `distDir`
this.files = [
// this.srcDir + '/folder/**/*' // Copy whole folder with subfolders
// this.srcDir + '/file.txt' // Copy specified file
];
this.jsOut = this.jsDir;
this.lessDir = 'less';
this.less = [
this.lessDir + '/**/*.less'
];
this.lessOut = this.lessDir;
this.cssDir = this.srcDir + '/css';
this.cssFiles = this.cssDir + '/**/*.css';
this.htmlDir = this.srcDir;
this.html = this.htmlDir + '/**/*.html';
this.htmlFiles = this.html;
this.htmlOut = this.distDir;
this.imgDir = this.srcDir + '/img';
this.imgFiles = this.imgDir + '/**/*';
this.imgOut = this.distDir + '/img';
this.jsDir = this.srcDir + '/js';
this.js = this.jsDir + '/index.js';
this.jsFiles = this.jsDir + '/**/*.js';
this.jsOut = this.distDir + '/js';
this.lessDir = this.srcDir + '/less';
this.less = this.lessDir + '/index.less';
this.lessFiles = this.lessDir + '/**/*.less';
this.lessOut = this.distDir + '/css';
};
gulp.task('compile-less', function (done) {
return gulp.src(paths.less)
.pipe(less().on(failSafe ? 'error' : 'none', shallow(done)))
.pipe(nano().on(failSafe ? 'error' : 'none', shallow(done)))
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(paths.lessOut));
});
gulp.task('min-css', function (done) {
return gulp.src(paths.css)
.pipe(nano().on(failSafe ? 'error' : 'none', shallow(done)))
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(paths.cssOut));
});
gulp.task('concat-css', ['compile-less', 'min-css'], function () {
return gulp.src([/* list of files to concat (ex.: [paths.cssOut+'/style.min.css', paths.lessOut+'/style.min.css', ...]) */])
.pipe(concat('style.all.min.css'))
.pipe(gulp.dest(paths.cssOut));
});
// Files
gulp.task('min-js', function (done) {
return gulp.src(paths.js)
.pipe(uglify().on(failSafe ? 'error' : 'none', shallow(done)))
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest(paths.jsOut));
});
gulp.task('concat-js', ['min-js'], function () {
return gulp.src([/* list of files to concat (ex.: [paths.jsOut+'/script.min.js', ...]) */])
.pipe(concat('script.all.min.js'))
.pipe(gulp.dest(paths.jsOut));
gulp.task('files-copy', function () {
return gulp.src(paths.files, {
base: paths.srcDir
})
.pipe(gulp.dest(paths.distDir));
});
gulp.task('files', ['files-copy']);
gulp.task('html-replace', function () {
return gulp.src(paths.html)
.pipe(replace({
'css': paths.cssOut + '/style.all.min.css',
'js': paths.jsOut + '/script.all.min.js'
}))
.pipe(gulp.dest(paths.htmlOut))
// Images
gulp.task('img-copy', function () {
return gulp.src(paths.imgFiles)
.pipe(gulp.dest(paths.imgOut));
});
gulp.task('min-html', ['html-replace'], function () {
gulp.task('images', ['img-copy']);
// Markup
gulp.task('html-min', function () {
return gulp.src(paths.html)
.pipe(htmlMin({
collapseWhitespace: true,
......@@ -95,32 +81,50 @@ gulp.task('min-html', ['html-replace'], function () {
}))
.pipe(gulp.dest(paths.htmlOut));
});
gulp.task('markup', ['html-min']);
gulp.task('test', ['concat-css', 'concat-js']);
// Scripts
gulp.task('watch', function () {
failSafe = true;
gulp.watch([paths.css, paths.less], ['concat-css']);
gulp.watch(paths.js, ['concat-js']);
gulp.task('js-browserify', function (done) {
return browserify(paths.js, {
debug: !production
})
.bundle()
.pipe(source('script.all.min.js'))
.pipe(production ? streamify(uglify().on(failSafe ? 'error' : 'none', shallow(done))) : noop())
.pipe(gulp.dest(paths.jsOut));
});
gulp.task('scripts', ['js-browserify']);
// Styles
gulp.task('build', ['concat-css', 'concat-js', 'min-html']);
gulp.task('less-compile', function (done) {
return gulp.src(paths.less)
.pipe(less().on(failSafe ? 'error' : 'none', shallow(done)))
.pipe(production ? nano().on(failSafe ? 'error' : 'none', shallow(done)) : noop())
.pipe(rename('style.all.min.css'))
.pipe(gulp.dest(paths.lessOut));
});
gulp.task('styles', ['less-compile']);
// Stages
gulp.task('pretest', function () {
production = false;
});
gulp.task('test', ['pretest', 'files', 'images', 'markup', 'scripts', 'styles']);
gulp.task('watch', ['pretest'], function () {
failSafe = true;
gulp.watch(paths.files, ['files']);
gulp.watch(paths.htmlFiles, ['markup']);
gulp.watch(paths.imgFiles, ['images']);
gulp.watch(paths.jsFiles, ['scripts']);
gulp.watch([paths.cssFiles, paths.lessFiles], ['styles']);
});
gulp.task('build', ['files', 'images', 'markup', 'scripts', 'styles']);
gulp.task('clean', ['build'], function () {
return del([
paths.cssDir,
paths.cssOut + '/**/*.css',
'!' + paths.cssOut,
'!' + paths.cssOut + '/style.all.min.css',
paths.jsDir,
paths.jsOut + '/**/*.js',
'!' + paths.jsOut,
'!' + paths.jsOut + '/script.all.min.js',
paths.lessDir,
paths.lessOut
]);
return del(paths.srcDir);
});
gulp.task('default', ['clean']);
{
"name": "project",
"version": "version",
"scripts": {
"test": "gulp test && concurrently \"gulp watch\" \"lite-server\"",
"start": "gulp"
"prestart": "npm install",
"start": "gulp test && concurrently \"gulp watch\" \"lite-server\"",
"build": "gulp"
},
"devDependencies": {
"concurrently": "^2.2.0",
"lite-server": "^2.2.2",
"browserify": "^14.1.0",
"concurrently": "^3.4.0",
"del": "^2.2.2",
"lite-server": "^2.3.0",
"gulp-streamify": "^1.0.2",
"vinyl-source-stream": "^1.1.0",
"gulp": "^3.9.1",
"gulp-less": "^3.1.0",
"gulp-cssnano": "^2.1.2",
"gulp-uglify": "^2.0.0",
"gulp-empty": "^0.1.1",
"gulp-htmlmin": "^3.0.0",
"gulp-less": "^3.3.0",
"gulp-rename": "^1.2.2",
"gulp-concat": "^2.6.0",
"gulp-html-replace": "^1.6.1",
"gulp-htmlmin": "^2.0.0",
"del": "^2.2.2"
"gulp-uglify": "^2.1.0",
"jquery": "^3.1.1"
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Project</title>
<script async src="js/script.all.min.js"></script>
<link rel="stylesheet" href="css/style.all.min.css">
</head>
<body>
<!-- Code goes here -->
</body>
</html>
'use strict';
var $ = require('jquery');
module.exports = {
/*
* Functions to be exported go here. Format:
* exportName: functionName
*/
};
// Code goes here
'use strict';
var $ = window.$ = window.jQuery = require('jquery');
var functions = require('./functions');
/*
* Exported in 'functions.js' functions can be used here:
* functions.exportName()
*/
$(function () {
// Code goes here
});
/*
* Global styles go here
*/
/*
* Imports go here
* http://lesscss.org/features/#import-options
*/
@import "global";
@import "style";
@import "media";
/*
* Styles for different media types/devices go here
*/
/*
* Styles go here
*/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment