Skip to content

Commit f4683f2

Browse files
author
Lucas Vogel
committed
Added gulp with a configuration that allows compiling from es2015 to es5
1 parent 6cfe556 commit f4683f2

7 files changed

Lines changed: 146 additions & 1 deletion

File tree

.babelrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"presets": [
3+
"es2015",
4+
"stage-0"
5+
],
6+
"plugins": []
7+
}

.eslintrc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"extends": "eslint:recommended",
3+
"ecmaFeatures": {
4+
"arrowFunctions": true,
5+
"blockBindings": true,
6+
"classes": true,
7+
"defaultParams": true,
8+
"destructering": true,
9+
"spread": true,
10+
"superInFunctions": true,
11+
"templateStrings": true,
12+
"unicodeCodePointEscapes": true,
13+
"modules": true
14+
},
15+
"rules": {
16+
"quotes": [2, "single"],
17+
"eqeqeq": 2,
18+
"curly": 2,
19+
"camelcase": 2,
20+
"strict": [2, "global"],
21+
"no-var": 2,
22+
"no-unused-vars": 2,
23+
"no-console": 0,
24+
"max-len": [2, 90, 4],
25+
"semi": [2, "always"]
26+
},
27+
"parser": "babel-eslint",
28+
"environment": {
29+
"browser": true,
30+
"es6": true
31+
},
32+
"settings": {
33+
"ecmascript": 6,
34+
"jsx": false
35+
}
36+
}
37+

dist/example.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2+
"use strict";
3+
4+
var a = 1;
5+
6+
},{}]},{},[1]);

gulpfile.js/index.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
var gulp = require('gulp');
2+
var browserify = require('browserify');
3+
var babelify = require('babelify');
4+
var clean = require('gulp-clean');
5+
var argv = require('yargs').argv;
6+
var util = require('gulp-util');
7+
var source = require('vinyl-source-stream');
8+
var filesUtil = require('./util/filesUtil');
9+
10+
var srcRoot = './src';
11+
var distRoot = './dist';
12+
var paths = {
13+
src: {
14+
root: srcRoot
15+
},
16+
dist: {
17+
root: distRoot
18+
}
19+
};
20+
21+
gulp.task('clean', function() {
22+
return gulp.src(paths.dist.root, {
23+
read: false
24+
})
25+
.pipe(clean());
26+
});
27+
28+
gulp.task('es2015-to-es5', ['clean'], function() {
29+
var entryPath = argv.script || argv.s || srcRoot + '/' +
30+
filesUtil.getLastModifiedFileInDir(srcRoot);
31+
var outputFileName = argv.output || argv.o || 'scriptOutput.js';
32+
33+
if (!entryPath) {
34+
util.beep();
35+
util.log(util.colors.red(
36+
'You must provide the path to the script ' +
37+
'you want to compile. Use therefor -script or -s'));
38+
return;
39+
}
40+
41+
if (!outputFileName) {
42+
util.beep();
43+
util.log(util.colors.red(
44+
'You must provide an output filename. ' +
45+
'Use therefor -output or -o'));
46+
return;
47+
}
48+
49+
return browserify(entryPath)
50+
.transform(babelify, {})
51+
.bundle()
52+
.on('error', util.log.bind(util, 'Browserify Error'))
53+
.pipe(source(outputFileName))
54+
.pipe(gulp.dest(distRoot));
55+
});
56+
57+
gulp.task('default', ['es2015-to-es5']);

gulpfile.js/util/filesUtil.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var fs = require('fs');
2+
var recursive = require('recursive-readdir');
3+
4+
var filesUtil = Object.create(null);
5+
6+
filesUtil.getFilesByChronologicalOrderInDir = function(dir) {
7+
var allFiles = fs.readdirSync(dir);
8+
recursive(dir, function(err, files) {
9+
if (err) { return; }
10+
allFiles = files;
11+
});
12+
return allFiles.sort(function(a, b) {
13+
return
14+
fs.statSync(dir + a).mtime.getTime() -
15+
fs.statSync(dir + b).mtime.getTime();
16+
});
17+
};
18+
19+
filesUtil.getLastModifiedFileInDir = function(dir) {
20+
return filesUtil.getFilesByChronologicalOrderInDir(dir)[0];
21+
};
22+
23+
module.exports = Object.create(filesUtil);

package.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,18 @@
2727
"bugs": {
2828
"url": "https://github.com/vogelino/es2015-2-extendScript-build/issues"
2929
},
30-
"homepage": "https://github.com/vogelino/es2015-2-extendScript-build#readme"
30+
"homepage": "https://github.com/vogelino/es2015-2-extendScript-build#readme",
31+
"devDependencies": {
32+
"babel": "^6.5.2",
33+
"babel-preset-es2015": "^6.6.0",
34+
"babel-preset-stage-0": "^6.5.0",
35+
"babelify": "^7.3.0",
36+
"browserify": "^13.0.0",
37+
"gulp": "^3.9.1",
38+
"gulp-clean": "^0.3.2",
39+
"gulp-util": "^3.0.7",
40+
"recursive-readdir": "^2.0.0",
41+
"vinyl-source-stream": "^1.1.0",
42+
"yargs": "^4.6.0"
43+
}
3144
}

src/example/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
var a = 1;

0 commit comments

Comments
 (0)