Commit beb81fde authored by Vadym Gidulian's avatar Vadym Gidulian

Initial commit

parent f6dddbfd
dist/
# Dependency directories # Dependency directories
node_modules/ node_modules/
......
...@@ -6,13 +6,8 @@ test: ...@@ -6,13 +6,8 @@ test:
script: script:
- node -v - node -v
- npm -v - npm -v
- npm install - npm run build
- npm start - rsync -rv --delete dist/ $GVIA_TEST_DIR/$PROJECT_NAME/
- 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/
only: only:
- dev - dev
demo: demo:
...@@ -20,12 +15,7 @@ demo: ...@@ -20,12 +15,7 @@ demo:
script: script:
- node -v - node -v
- npm -v - npm -v
- npm install - npm run build
- npm start - rsync -rv --delete dist/ $GVIA_DEMO_DIR/$PROJECT_NAME/
- 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/
only: only:
- master - master
{ {
"server": {
"baseDir": "dist"
},
"watchOptions": { "watchOptions": {
"ignored": [ "ignored": [
"css/**/(?!style.all.min)*.css", "src",
"js/**/(?!script.all.min)*.js",
"less",
"node_modules" "node_modules"
] ]
} }
......
var browserify = require('browserify');
var del = require('del');
var source = require('vinyl-source-stream');
var gulp = require('gulp'); var gulp = require('gulp');
var less = require('gulp-less');
var nano = require('gulp-cssnano'); var nano = require('gulp-cssnano');
var uglify = require('gulp-uglify'); var noop = require('gulp-empty');
var rename = require('gulp-rename');
var concat = require('gulp-concat');
var replace = require('gulp-html-replace');
var htmlMin = require('gulp-htmlmin'); 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 failSafe = false;
var production = true;
function shallow(done) { function shallow(done) {
return function (error) { return function (error) {
...@@ -17,77 +21,59 @@ function shallow(done) { ...@@ -17,77 +21,59 @@ function shallow(done) {
} }
var paths = new function() { var paths = new function() {
this.htmlDir = '.'; this.srcDir = 'src';
this.html = this.htmlDir + '/*.html'; this.distDir = 'dist';
this.htmlOut = this.htmlDir;
this.cssDir = 'css';
this.css = [
this.cssDir + '/**/*.css',
'!' + this.cssDir + '/**/*.min.css'
];
this.cssOut = this.cssDir;
this.jsDir = 'js'; // Files to be copied to `distDir`
this.js = [ this.files = [
this.jsDir + '/**/*.js', // this.srcDir + '/folder/**/*' // Copy whole folder with subfolders
'!' + this.jsDir + '/**/*.min.js' // this.srcDir + '/file.txt' // Copy specified file
]; ];
this.jsOut = this.jsDir;
this.lessDir = 'less'; this.cssDir = this.srcDir + '/css';
this.less = [ this.cssFiles = this.cssDir + '/**/*.css';
this.lessDir + '/**/*.less'
]; this.htmlDir = this.srcDir;
this.lessOut = this.lessDir; 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) { // Files
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));
});
gulp.task('min-js', function (done) { gulp.task('files-copy', function () {
return gulp.src(paths.js) return gulp.src(paths.files, {
.pipe(uglify().on(failSafe ? 'error' : 'none', shallow(done))) base: paths.srcDir
.pipe(rename({ })
suffix: '.min' .pipe(gulp.dest(paths.distDir));
}))
.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', ['files-copy']);
gulp.task('html-replace', function () { // Images
return gulp.src(paths.html)
.pipe(replace({ gulp.task('img-copy', function () {
'css': paths.cssOut + '/style.all.min.css', return gulp.src(paths.imgFiles)
'js': paths.jsOut + '/script.all.min.js' .pipe(gulp.dest(paths.imgOut));
}))
.pipe(gulp.dest(paths.htmlOut))
}); });
gulp.task('min-html', ['html-replace'], function () { gulp.task('images', ['img-copy']);
// Markup
gulp.task('html-min', function () {
return gulp.src(paths.html) return gulp.src(paths.html)
.pipe(htmlMin({ .pipe(htmlMin({
collapseWhitespace: true, collapseWhitespace: true,
...@@ -95,32 +81,50 @@ gulp.task('min-html', ['html-replace'], function () { ...@@ -95,32 +81,50 @@ gulp.task('min-html', ['html-replace'], function () {
})) }))
.pipe(gulp.dest(paths.htmlOut)); .pipe(gulp.dest(paths.htmlOut));
}); });
gulp.task('markup', ['html-min']);
gulp.task('test', ['concat-css', 'concat-js']); // Scripts
gulp.task('watch', function () { gulp.task('js-browserify', function (done) {
failSafe = true; return browserify(paths.js, {
gulp.watch([paths.css, paths.less], ['concat-css']); debug: !production
gulp.watch(paths.js, ['concat-js']); })
.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 () { gulp.task('clean', ['build'], function () {
return del([ return del(paths.srcDir);
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
]);
}); });
gulp.task('default', ['clean']); gulp.task('default', ['clean']);
{ {
"name": "project", "name": "project",
"version": "version", "version": "version",
"scripts": { "scripts": {
"test": "gulp test && concurrently \"gulp watch\" \"lite-server\"", "prestart": "npm install",
"start": "gulp" "start": "gulp test && concurrently \"gulp watch\" \"lite-server\"",
"build": "gulp"
}, },
"devDependencies": { "devDependencies": {
"concurrently": "^2.2.0", "browserify": "^14.1.0",
"lite-server": "^2.2.2", "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": "^3.9.1",
"gulp-less": "^3.1.0",
"gulp-cssnano": "^2.1.2", "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-rename": "^1.2.2",
"gulp-concat": "^2.6.0", "gulp-uglify": "^2.1.0",
"gulp-html-replace": "^1.6.1",
"gulp-htmlmin": "^2.0.0", "jquery": "^3.1.1"
"del": "^2.2.2"
} }
} }
<!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