Skip to content

Commit

Permalink
Update build system; fix (probably) a several loading bug
Browse files Browse the repository at this point in the history
  • Loading branch information
pyrsmk committed Jan 4, 2017
1 parent f7fe8c0 commit 451ddf6
Show file tree
Hide file tree
Showing 10 changed files with 97 additions and 72 deletions.
8 changes: 1 addition & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
toast 2.1.1
toast 2.2.0
===========

Toast is a tiny resource loader for JS and CSS files.
Expand All @@ -11,14 +11,8 @@ You can pick the minified library or install it with :
```
npm install pyrsmk-toast
bower install toast
jam install pyrsmk-toast
```

Changes from v1
---------------

Be careful! The loading state detector has been redesigned and additional loading verification callbacks have been dropped.

Syntax
------

Expand Down
4 changes: 2 additions & 2 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "toast",
"description": "A simple CSS/JS resource loader",
"main": "toast.js",
"main": "lib/toast.js",
"repository": {
"type": "git",
"url": "git://github.com/pyrsmk/toast.git"
Expand All @@ -22,7 +22,7 @@
".gitignore",
"nodes_modules/",
"tests/",
"Gruntfile.js",
"gulpfile.js",
"package.json"
]
}
108 changes: 67 additions & 41 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,59 +1,85 @@
var fs = require('fs'),
gulp = require('gulp'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
replace = require('gulp-replace'),
rename = require('gulp-rename'),
merge = require('merge2'),
var gulp = require('gulp'),
shell = require('gulp-shell'),
umd = require('gulp-umd');

var name = 'toast',
version = fs.readFileSync('src/'+name+'.js', {encoding:'utf8'}).match(/^\/\*\! [\w-]+ ([0-9.]+)/)[1];
name = __dirname.match(/\\([^\\]*)$/)[1],
version = require('./package.json').version;

// ======================================== gulp version

gulp.task('version', function() {
var streams = merge();
streams.add(
gulp.src( 'package.json' )
.pipe( replace(/"version": "[0-9.]+",/, '"version": "'+version+'",') )
.pipe( gulp.dest('.') )
);
streams.add(
gulp.src( 'README.md' )
.pipe( replace(/^(\w+) [0-9.]+/, '$1 '+version) )
.pipe( gulp.dest('.') )
);
return streams;
var replace = require('gulp-replace');

return gulp.src( './README.md' )
.pipe( replace(/^([\w-]+) [0-9.]+/, '$1 ' + version) )
.pipe( gulp.dest('.') );

});

// ======================================== gulp lint

gulp.task('lint', function() {
var lint = require('gulp-eslint'),
flow = require('gulp-flowtype');

return gulp.src( './src/' + name + '.js' )
.pipe( flow() )
.pipe( lint({
rules: {
"array-bracket-spacing": [2, "never"],
"block-scoped-var": 2,
"camelcase": 1,
"computed-property-spacing": [2, "never"],
"curly": 2,
"max-depth": [1, 3],
"max-statements": [1, 30],
"new-cap": 1,
"no-extend-native": 2,
"no-use-before-define": [2, "nofunc"],
"quotes": [2, "single", "avoid-escape"],
"semi": [2, "always"],
"space-unary-ops": 2
}
}) )
.pipe( lint.format() );

});

// ======================================== gulp build

gulp.task('build', ['version'], function() {
return gulp.src( './src/*.js' )
.pipe( jshint({
loopfunc: true,
boss: true
}) )
.pipe( jshint.reporter('jshint-stylish') )
.pipe( umd({
exports: function() { return name; },
namespace: function() { return name; }
}) )
.pipe( gulp.dest('.') )
.pipe( uglify() )
.pipe( rename({suffix: '.min'}) )
.pipe( gulp.dest('.') );
gulp.task('build', ['version', 'lint'], function() {
var concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
umd = require('gulp-umd'),
add = require('gulp-add-src'),
resolve = require('resolve'),
_ = require('lodash'),
dependencies = [];

(_.keys(require('./package.json').dependencies) || []).forEach(function(dep) {
dependencies.unshift(resolve.sync(dep));
});

return gulp.src( './src/**' )
.pipe( umd({
template: './node_modules/umd-templates/patterns/returnExportsGlobal.js',
namespace: function() {
return name;
}
}) )
.pipe( add.prepend(dependencies) )
.pipe( concat(name + '.js') )
.pipe( gulp.dest('./lib/') )
.pipe( uglify() )
.pipe( rename(name + '.min.js') )
.pipe( gulp.dest('./lib/') );
});

// ======================================== gulp publish

gulp.task('publish', shell.task([
"git tag -a "+version+" -m '"+version+"'",
"git tag -a " + version + " -m '" + version + "'",
'git push --tags',
'npm publish',
'jam publish'
'npm publish'
]));

// ======================================== gulp
Expand Down
16 changes: 9 additions & 7 deletions toast.js → lib/toast.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
;(function(root, factory) {
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
define([], function() {
return (root.toast = factory());
});
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.toast = factory();
}
}(this, function() {
/*! toast 2.1.1 (https://github.com/pyrsmk/toast) */

var handled_resources = {};

function toast() {
function Toast() {
var head = document.getElementsByTagName('head')[0],

// Load as much resources as we can
Expand Down Expand Up @@ -70,7 +70,7 @@ function toast() {
// Create SCRIPT element
node = document.createElement('script');
node.src = resource;
node.type = 'text/javascript';
node.async = false;
head.appendChild(node);
// Watch loading state
var version = navigator.appVersion.match(/MSIE (\d)/);
Expand All @@ -79,13 +79,15 @@ function toast() {
node.onreadystatechange = function() {
if(/ded|co/.test(this.readyState)) {
handled_resources[resource] = true;
node.onreadystatechange = null;
}
};
}
else {
// Other browsers
node.onload = function() {
handled_resources[resource] = true;
node.onload = null;
};
}
break;
Expand Down Expand Up @@ -135,5 +137,5 @@ function toast() {
// Load resources
loadResources(arguments);
}
return toast;
return Toast;
}));
1 change: 1 addition & 0 deletions lib/toast.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 12 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "pyrsmk-toast",
"description": "A simple CSS/JS resource loader",
"version": "2.1.1",
"version": "2.2.0",
"author": "Aurélien Delogu <pyrsmk@dreamysource.fr> (http://dreamysource.fr)",
"repository": {
"type": "git",
"url": "https://github.com/pyrsmk/toast.git"
},
"main": "toast.js",
"main": "lib/toast.js",
"keywords": [
"css",
"js",
Expand All @@ -20,14 +20,18 @@
},
"homepage": "http://dreamysource.io/project/toast",
"devDependencies": {
"gulp": "^3.8.11",
"gulp-jshint": "^1.11.0",
"gulp": "^3.9.0",
"gulp-add-src": "^0.2.0",
"gulp-concat": "^2.6.0",
"gulp-eslint": "^3.0.1",
"gulp-flowtype": "^1.0.0",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.3",
"gulp-shell": "^0.4.1",
"gulp-uglify": "^1.2.0",
"gulp-shell": "^0.4.2",
"gulp-uglify": "^2.0.0",
"gulp-umd": "^0.2.0",
"jshint-stylish": "^2.0.0",
"merge2": "^0.3.5"
"lodash": "^4.16.4",
"resolve": "^1.1.7",
"umd-templates": "0.0.3"
}
}
7 changes: 3 additions & 4 deletions src/toast.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
/*! toast 2.1.1 (https://github.com/pyrsmk/toast) */

var handled_resources = {};

function toast() {
function Toast() {
var head = document.getElementsByTagName('head')[0],

// Load as much resources as we can
Expand Down Expand Up @@ -61,7 +59,6 @@ function toast() {
// Create SCRIPT element
node = document.createElement('script');
node.src = resource;
node.type = 'text/javascript';
head.appendChild(node);
// Watch loading state
var version = navigator.appVersion.match(/MSIE (\d)/);
Expand All @@ -70,13 +67,15 @@ function toast() {
node.onreadystatechange = function() {
if(/ded|co/.test(this.readyState)) {
handled_resources[resource] = true;
node.onreadystatechange = null;
}
};
}
else {
// Other browsers
node.onload = function() {
handled_resources[resource] = true;
node.onload = null;
};
}
break;
Expand Down
2 changes: 1 addition & 1 deletion tests/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="../toast.min.js"></script>
<script src="../lib/toast.js"></script>
<script src="tests.js"></script>
</body>
</html>
2 changes: 1 addition & 1 deletion tests/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ QUnit.test('Several resources', function(assert) {
function() {
assert.ok(typeof jQuery == 'function', 'jQuery loaded');
assert.ok(typeof qwest == 'object', 'qwest loaded [explicit]');
assert.ok(typeof Horizon == 'object', 'Horizon loaded');
assert.ok(typeof Horizon == 'function', 'Horizon loaded');
assert.ok(document.styleSheets.length == 3, 'Google font loaded [explicit]');
done1();

Expand Down
1 change: 0 additions & 1 deletion toast.min.js

This file was deleted.

0 comments on commit 451ddf6

Please sign in to comment.