Removed local gulp

This commit is contained in:
Linus Miller 2016-09-15 11:09:50 +02:00
parent 19eb67763c
commit d2f97eaed0
16 changed files with 0 additions and 633 deletions

View File

@ -1,22 +0,0 @@
The MIT License (MIT)
Copyright (c) 2016 Linus Miller
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,23 +0,0 @@
# gulp
## Tasks
### browserify.js
### browser-sync.js
### fonts.js
### nodemon.js
### raster.js
### sass.js
### static.js
### svg.js
### watch.js
### wipe.js

View File

@ -1,121 +0,0 @@
'use strict'
const p = require('path')
const fs = require('fs')
const port = fs.existsSync(p.join(PWD, 'server/config/port.js')) ?
require(p.join(PWD, 'server/config/port')) : 10000
module.exports = {
browserSync: {
browser: null,
ghostMode: false,
proxy: 'localhost:' + port,
port: 1337,
ui: {
port: 1338
},
files: [
p.join(PWD, 'public/css/**/*.css'),
p.join(PWD, 'public/js/**/*.js'),
]
},
browserify: {
suffix: true,
debug: true,
dest: p.join(PWD, 'public/js'),
extensions: [ '.js', '.jsx', '.json' ],
// PWD/node_modules is added so symlinked ridge does not break. used to
// work without this in browserify 9
paths: [ p.join(PWD, 'node_modules'), p.join(PWD, 'modules') ],
// outputs only need to be used if output names are different from entries.
// Otherwise the entries array is copied into the outputs array.
entries: [
'src/app.js'
],
src: p.join(PWD, 'src')
},
less: {
suffix: true,
src: [
p.join(PWD, 'less/*.less'),
],
dest: p.join(PWD, 'public/css'),
autoprefixer: {
browsers: [
'safari >= 5',
'ie >= 8',
'ios >= 6',
'opera >= 12.1',
'firefox >= 17',
'chrome >= 30',
'android >= 4'
],
cascade: true
},
functions: require('./less/functions'),
options: {
paths: [
p.join(PWD, 'node_modules/spineless/less')
],
}
},
nodemon: {
ext: 'js, marko',
watch: [
'server',
'src',
],
ignore: [
'*.marko.js',
// only watch marko files in src folders.
'src/**/*.js'
],
script: fs.existsSync(p.join(PWD, 'package.json')) ? require(p.join(PWD, 'package.json')).main.replace(/^\./, PWD) : 'server/server.js',
env: {
BABEL_ENV: 'server',
// what port you actually put into the browser... when using browser-sync
// this will differ from the internal port used by express
EXTERNAL_PORT: 1337,
// needed to force debug to use colors despite tty.istty(0) being false,
// which it is in a child process
DEBUG_COLORS: true,
// needed to force chalk to use when running gulp nodemon tasks.
FORCE_COLOR: true,
PWD,
NODE_ENV: ENV,
DEBUG: 'mypaper:*'
}
},
raster: {
src: p.join(PWD, 'img/raster/**/*.{png,gif,jpg}'),
dest: p.join(PWD, 'public/img')
},
static: {
src: p.join(PWD, 'static/**/*'),
dest: p.join(PWD, 'public')
},
svg: {
src: p.join(PWD, 'img/svg/**/*.svg'),
dest: p.join(PWD, 'public/img')
},
tasks: {
development: [ 'wipe', [ 'browserify', 'less', 'raster', 'static', 'svg' ], [ 'nodemon' ], [ 'watch', 'browser-sync' ] ],
production: [ 'wipe', [ 'browserify', 'less', 'raster', 'static', 'svg' ]]
}[ENV],
watch: {
less: p.join(PWD, 'less/**/*.less')
},
wipe: {
src: [ p.join(PWD, 'public') ]
}
}

View File

@ -1,30 +0,0 @@
'use strict'
// modules > 3rd party
const _ = require('lodash')
// modules > gulp
const gulp = require('gulp')
global.ENV = process.env.NODE_ENV || 'development'
global.PWD = process.env.PWD
const args = process.argv.slice(2)
// use tasks from arguments list if present, otherwise use tasks from
// configuration (environment specific)
let tasks = args.length > 0 ? args : require('./config').tasks
// only require used tasks
_.flatten(tasks, true).forEach((task) => require('./tasks/' + task))
tasks = tasks.map((task) => {
if (Array.isArray(task)) {
return gulp.parallel(...task)
}
return task
})
// set up the 'default' task to use runSequence to run all tasks
gulp.task('default', gulp.series(...tasks))

View File

@ -1,42 +0,0 @@
'use strict'
const p = require('path')
module.exports = {
'img-url': function (value) {
const tree = this.context.pluginManager.less.tree
return new tree.URL(new tree.Quoted('"', p.join('/img', value.value)), this.index, this.currentFileInfo)
},
rem: function (value, context) {
const tree = this.context.pluginManager.less.tree
if (value.type === 'Expression')
return new tree.Expression(value.value.map((value) => {
if (value.unit.backupUnit === 'px')
return new tree.Dimension(value.value / 14, 'rem')
return new tree.Dimension(value.value, 'rem')
}))
return new tree.Dimension(value.value / 14, 'rem')
},
px: function (value) {
const tree = this.context.pluginManager.less.tree
if (value.type === 'Expression')
return new tree.Expression(value.value.map((value) => {
if (value.unit.backupUnit === 'px')
return value
return new tree.Dimension(value.value * 14, 'px')
}))
if (value.unit.backupUnit === 'px')
return value
return new tree.Dimension(value.value * 14, 'px')
}
}

View File

@ -1,9 +0,0 @@
'use strict'
const gulp = require('gulp')
const browserSync = require('browser-sync')
const TASK_NAME = 'browser-sync'
const config = require('../config').browserSync
gulp.task(TASK_NAME, () => browserSync(config))

View File

@ -1,126 +0,0 @@
'use strict'
// native modules
const p = require('path')
const fs = require('fs')
// 3rd party modules
const _ = require('lodash')
const browserify = require('browserify')
const buffer = require('vinyl-buffer')
const chalk = require('chalk')
const es = require('event-stream')
const gulp = require('gulp')
const gutil = require('gulp-util')
const rename = require('gulp-rename')
const source = require('vinyl-source-stream')
const sourcemaps = require('gulp-sourcemaps')
const uglify = require('gulp-uglify')
const watchify = require('watchify')
const babelify = require('babelify')
const markoify = require('markoify')
require('marko/compiler').defaultOptions.writeToDisk = false
process.env.BABEL_ENV = 'client'
const config = require('../config').browserify
const suffix = config.suffix && ENV === 'production' ? '-' + Date.now().toString(16) : ''
const errorHandler = require('../util/error-handler')
function formatError(err) {
err.task = 'browserify'
const matchFileName = err.message.match(/\/[^\s:]*/)
if (matchFileName) {
let fileName = matchFileName[0]
if (fileName.indexOf(PWD) > -1)
fileName = './' + p.relative(PWD, fileName)
fileName = chalk.yellow(fileName)
const matchNumbers = err.message.match(/ \((.*)\)/)
if (matchNumbers) {
const arr = matchNumbers[1].split(':')
err.message = err.message.slice(0, matchNumbers.index) +
' at line ' + arr[0] + ', col ' + arr[1]
}
err.message = err.message.split(matchFileName[0]).join(fileName)
}
err.message = err.message.split(/:\s*/).join('\n')
errorHandler.call(this, err)
}
if (typeof config.entries === 'string') config.entries = [config.entries]
const TASK_NAME = 'browserify'
gulp.task(TASK_NAME, (cb) => {
cb = _.after(config.entries.length, cb)
if (config.suffix)
fs.writeFileSync(config.dest + '.json', JSON.stringify({ suffix }))
const tasks = config.entries.map((entry, index) => {
function bundler(bundle) {
let outputPath = config.outputs && config.outputs[index] || entry
let pipe = bundle.bundle()
.on('error', formatError)
.pipe(source(outputPath))
.pipe(rename((path) => {
if (outputPath === entry) {
// remove first level of directores, eg `src/` or `src-widget/`
path.dirname = path.dirname.replace(/^src[^\/]*\/?/, '')
outputPath = path.dirname + path.basename + (path.suffix || '') + path.extname
}
path.basename += suffix
return path
}))
.on('end', (...args) => {
gutil.log(chalk.cyan(TASK_NAME) + ' wrote ' + chalk.magenta(outputPath) + '.')
cb()
})
if (ENV !== 'development')
pipe = pipe.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(uglify())
.pipe(sourcemaps.write('./'))
return pipe.pipe(gulp.dest(config.dest))
}
const bundle = browserify(_.defaults({
entries: [ entry ],
cache: {},
packageCache: {}
}, config))
if (ENV !== 'production')
bundle.plugin(watchify, {
ignoreWatch: [ '/public/**', '**/node_modules/**', '**/bower_components/**']
})
bundle.transform(babelify)
bundle.transform(markoify)
bundle.on('update', () => bundler(bundle))
return bundler(bundle)
})
// return a single stream from all bundle streams
return es.merge.apply(null, tasks)
})

View File

@ -1,49 +0,0 @@
'use strict'
const fs = require('fs')
const gulp = require('gulp')
const _less = require('less')
const less = require('gulp-less')
const sourcemaps = require('gulp-sourcemaps')
const rename = require('gulp-rename')
const mkdirp = require('mkdirp')
const postcss = require('gulp-postcss')
const autoprefixer = require('autoprefixer')
const config = require('../config').less
const errorHandler = require('../util/error-handler')
_less.functions.functionRegistry.addMultiple(config.functions)
const processors = [
autoprefixer(config.autoprefixer),
]
if (ENV === 'production') {
const csswring = require('csswring')
processors.push(csswring(config.csswring))
}
const suffix = config.suffix && ENV === 'production' ? '-' + Date.now().toString(16) : undefined
gulp.task('less', function () {
mkdirp(config.dest)
if (suffix)
fs.writeFile(config.dest + '.json', JSON.stringify({ suffix }))
let pipe = gulp.src(config.src)
.pipe(sourcemaps.init())
.pipe(less(config.options).on('error', errorHandler))
.pipe(postcss(processors))
if (suffix)
pipe = pipe.pipe(rename({ suffix }))
return pipe.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest(config.dest))
})

View File

@ -1,35 +0,0 @@
'use strict'
const _ = require('lodash')
const gulp = require('gulp')
const browserSync = require('browser-sync')
const nodemon = require('nodemon')
const config = require('../config').nodemon
// for some reason, this was needed somewhere before
//process.stdout.isTTY = true
gulp.task('nodemon', (cb) => {
nodemon(_.defaults({ stdout: false }, config))
.on('log', function (log) {
console.log(log.colour)
})
.on('readable', function () {
this.stdout.pipe(process.stdout)
this.stderr.pipe(process.stderr)
this.stdout.on('data', (chunk) => {
if (/HTTP server (running|listening|started) on|at port/i.test(chunk.toString('utf-8').trim())) {
if (cb)
cb()
cb = null
if (browserSync.active)
browserSync.reload()
}
})
})
})

View File

@ -1,27 +0,0 @@
'use strict'
// modules > native
const p = require('path')
// modules > 3rd party
const chalk = require('chalk')
// modules > gulp:utilities
const gulp = require('gulp')
const gutil = require('gulp-util')
const TASK_NAME = 'raster'
const config = require('../config').raster
gulp.task(TASK_NAME, () => {
let count = 0
return gulp.src(config.src)
.pipe(gulp.symlink((file) => {
count++
return p.join(config.dest)
}, { log: false }))
.on('end', () => {
gutil.log(chalk.cyan(TASK_NAME) + ' done symlinking ' + chalk.bold.blue(count) + ' files')
})
})

View File

@ -1,39 +0,0 @@
'use strict'
// modules > native
const p = require('path')
const fs = require('fs')
// modules > 3rd party
const chalk = require('chalk')
// modules > gulp:utilities
const gulp = require('gulp')
const through = require('through2')
const gutil = require('gulp-util')
const TASK_NAME = 'static'
const config = require('../config').static
gulp.task(TASK_NAME, () => {
let count = 0
return gulp.src(config.src)
// we use through so that we can skip directories
// we skip directories because we want to merge file structure
.pipe(through.obj((file, enc, callback) => {
fs.stat(file.path, (err, stats) => {
if (stats.isDirectory())
file = null
callback(null, file)
})
}))
.pipe(gulp.symlink((file) => {
count++
return p.join(config.dest)
}))
.on('end', () => {
gutil.log(chalk.cyan(TASK_NAME) + ' done symlinking ' + chalk.bold.blue(count) + ' files')
})
})

View File

@ -1,27 +0,0 @@
'use strict'
// modules > native
const p = require('path')
// modules > 3rd party
const chalk = require('chalk')
// modules > gulp:utilities
const gulp = require('gulp')
const gutil = require('gulp-util')
const TASK_NAME = 'svg'
const config = require('../config').svg
gulp.task(TASK_NAME, () => {
let count = 0
return gulp.src(config.src)
.pipe(gulp.symlink((file) => {
count++
return p.join(config.dest)
}))
.on('end', () => {
gutil.log(chalk.cyan(TASK_NAME) + ' done symlinking ' + chalk.bold.blue(count) + ' files')
})
})

View File

@ -1,16 +0,0 @@
'use strict'
// modules > 3rd party
const _ = require('lodash')
// modules > gulp:utilities
const gulp = require('gulp')
const TASK_NAME = 'watch'
const config = require('../config').watch
gulp.task(TASK_NAME, () => {
_.forIn(config, (value, key) => {
gulp.watch(value, gulp.series(key))
})
})

View File

@ -1,44 +0,0 @@
'use strict'
// native modules
const fs = require('fs')
// 3rd party modules
const mkdirp = require('mkdirp')
const chalk = require('chalk')
const gulp = require('gulp')
const gutil = require('gulp-util')
const rimraf = require('rimraf')
const TASK_NAME = 'wipe'
const config = require('../config').wipe
gulp.task(TASK_NAME, (cb) => {
let count = 0
config.src.forEach((folder) => {
fs.exists(folder, (exists) => {
if (exists) {
rimraf(folder, (err) => {
if (err) throw err
gutil.log('Folder ' + chalk.magenta(folder) + ' removed')
mkdirp.sync(folder)
count++
if (count >= config.src.length) {
cb()
}
})
} else {
count++
mkdirp.sync(folder)
if (count >= config.src.length) {
cb()
}
}
})
})
})

View File

@ -1,16 +0,0 @@
'use strict'
const util = require('gulp-util')
const chalk = require('chalk')
module.exports = function (err) {
util.log(chalk.red('ERROR') + (err.task ? ' in task \'' + chalk.cyan(err.task) : ' in plugin \'' + chalk.cyan(err.plugin)) + '\'')
console.log('\n' + err.message.trim() + '\n')
// needed for error handling not thrown by gulp-watch
if (this.emit) {
// Keep gulp from hanging on this task
this.emit('end')
}
}

View File

@ -1,7 +0,0 @@
'use strict';
require('./gulp');
process.on('SIGINT', () => {
process.exit(0);
});