This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.6 KiB
156 lines
3.6 KiB
/** |
|
* Copyright (c) 2013-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* @providesModule gulpfile |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var babel = require('gulp-babel'); |
|
var babelPluginDEV = require('fbjs-scripts/babel/dev-expression'); |
|
var babelPluginModules = require('fbjs-scripts/babel/rewrite-modules'); |
|
var del = require('del'); |
|
var derequire = require('gulp-derequire'); |
|
var flatten = require('gulp-flatten'); |
|
var gulp = require('gulp'); |
|
var gulpUtil = require('gulp-util'); |
|
var header = require('gulp-header'); |
|
var objectAssign = require('object-assign'); |
|
var runSequence = require('run-sequence'); |
|
var webpackStream = require('webpack-stream'); |
|
|
|
var DEVELOPMENT_HEADER = [ |
|
'/**', |
|
' * Animated v<%= version %>', |
|
' */' |
|
].join('\n') + '\n'; |
|
var PRODUCTION_HEADER = [ |
|
'/**', |
|
' * Animated v<%= version %>', |
|
' *', |
|
' * Copyright (c) 2013-present, Facebook, Inc.', |
|
' *', |
|
' * This source code is licensed under the MIT license found in the', |
|
' * LICENSE file in the root directory of this source tree.', |
|
' */' |
|
].join('\n') + '\n'; |
|
|
|
var babelOpts = { |
|
nonStandard: true, |
|
loose: [ |
|
'es6.classes' |
|
], |
|
stage: 1, |
|
plugins: [babelPluginDEV, babelPluginModules], |
|
_moduleMap: objectAssign({}, require('fbjs/module-map'), { |
|
'React': 'react', |
|
}) |
|
}; |
|
|
|
var buildDist = function(opts) { |
|
var webpackOpts = { |
|
debug: opts.debug, |
|
externals: { |
|
'react': 'React', |
|
}, |
|
module: { |
|
loaders: [ |
|
{test: /\.js$/, loader: 'babel'} |
|
], |
|
}, |
|
output: { |
|
filename: opts.output, |
|
library: 'Animated' |
|
}, |
|
plugins: [ |
|
new webpackStream.webpack.DefinePlugin({ |
|
'process.env.NODE_ENV': JSON.stringify( |
|
opts.debug ? 'development' : 'production' |
|
), |
|
}), |
|
new webpackStream.webpack.optimize.OccurenceOrderPlugin(), |
|
new webpackStream.webpack.optimize.DedupePlugin() |
|
] |
|
}; |
|
if (!opts.debug) { |
|
webpackOpts.plugins.push( |
|
new webpackStream.webpack.optimize.UglifyJsPlugin({ |
|
compress: { |
|
hoist_vars: true, |
|
screw_ie8: true, |
|
warnings: false |
|
} |
|
}) |
|
); |
|
} |
|
return webpackStream(webpackOpts, null, function(err, stats) { |
|
if (err) { |
|
throw new gulpUtil.PluginError('webpack', err); |
|
} |
|
if (stats.compilation.errors.length) { |
|
throw new gulpUtil.PluginError('webpack', stats.toString()); |
|
} |
|
}); |
|
}; |
|
|
|
var paths = { |
|
dist: 'dist', |
|
entry: 'lib/AnimatedWeb.js', |
|
lib: 'lib', |
|
src: [ |
|
'*src/**/*.js', |
|
'!src/**/__tests__/**/*.js', |
|
'!src/**/__mocks__/**/*.js' |
|
], |
|
}; |
|
|
|
gulp.task('clean', function(cb) { |
|
del([paths.dist, paths.lib], cb); |
|
}); |
|
|
|
gulp.task('modules', function() { |
|
return gulp |
|
.src(paths.src, {cwd: '../'}) |
|
.pipe(babel(babelOpts)) |
|
.pipe(flatten()) |
|
.pipe(gulp.dest(paths.lib)); |
|
}); |
|
|
|
gulp.task('dist', ['modules'], function () { |
|
var distOpts = { |
|
debug: true, |
|
output: 'animated.js' |
|
}; |
|
return gulp |
|
.src(paths.entry) |
|
.pipe(buildDist(distOpts)) |
|
.pipe(derequire()) |
|
.pipe(header(DEVELOPMENT_HEADER, { |
|
version: process.env.npm_package_version |
|
})) |
|
.pipe(gulp.dest(paths.dist)); |
|
}); |
|
|
|
gulp.task('dist:min', ['modules'], function () { |
|
var distOpts = { |
|
debug: false, |
|
output: 'animated.min.js' |
|
}; |
|
return gulp |
|
.src(paths.entry) |
|
.pipe(buildDist(distOpts)) |
|
.pipe(header(PRODUCTION_HEADER, { |
|
version: process.env.npm_package_version |
|
})) |
|
.pipe(gulp.dest(paths.dist)); |
|
}); |
|
|
|
gulp.task('watch', function() { |
|
gulp.watch(paths.src, ['modules']); |
|
}); |
|
|
|
gulp.task('default', function(cb) { |
|
runSequence('clean', 'modules', ['dist', 'dist:min'], cb); |
|
});
|
|
|