mirror of
https://github.com/koodiklinikka/gulp-project-template.git
synced 2026-01-26 03:34:07 +00:00
initial commit
This commit is contained in:
13
.editorconfig
Normal file
13
.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
||||
# http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
public
|
||||
bower_components
|
||||
61
README.md
Normal file
61
README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Project template for [gulp.js](http://gulpjs.com/)
|
||||
<img width="114px" height="257px" align="right" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png"/>
|
||||
|
||||
### What it does
|
||||
* [Jade](http://jade-lang.com) files to HTML
|
||||
* [Stylus](http://learnboost.github.io/stylus) files to CSS
|
||||
* [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html) files to Javascript through [browserify](http://browserify.org/)
|
||||
* You are able to use 'require' in your client-side code
|
||||
* Serves your static files to localhost:9001
|
||||
* Reloads your browser with LiveReload when files change
|
||||
|
||||
## Getting things up and running
|
||||
- Install [Node.js](http://nodejs.org)
|
||||
|
||||
```
|
||||
git clone git@github.com:leonidas/gulp-project-template.git <your project name>
|
||||
cd <your project name>
|
||||
npm install
|
||||
npm start
|
||||
open http://localhost:9001 in your browser
|
||||
````
|
||||
### Enable LiveReload
|
||||
Install [LiveReload for Chrome](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei?hl=en)
|
||||
|
||||
## CLI Commands
|
||||
* npm install
|
||||
* Installs server-side dependencies from NPM and client-side dependencies from Bower
|
||||
* npm start
|
||||
* Compiles your files, starts watching files for changes, serves static files to port 9001
|
||||
* npm run build
|
||||
* Builds everything
|
||||
|
||||
Minification, uglification and other tasks you're expected to run before deploying your product can be made by running the build command with env variable NODE_ENV set to "production"
|
||||
|
||||
NODE_ENV=production npm run build
|
||||
|
||||
## Development guidelines
|
||||
* **public** - directory should be dedicated only to compiled/copied files from **src** - directory.
|
||||
It should be possible to delete directory completely and after **npm start** or **npm run build** everything should be as they were before the deletion.
|
||||
* All backend dependencies should be installed with **npm**. Browser dependencies should be installed with **bower** or with **npm**.
|
||||
|
||||
### Using JavaScript instead of CoffeeScript
|
||||
Remove coffeeify transform from package.json file (browserify.transform field)
|
||||
```diff
|
||||
"transform": [
|
||||
- "coffeeify",
|
||||
"debowerify",
|
||||
"deamdify"
|
||||
]
|
||||
```
|
||||
|
||||
and change the ".coffee" extension to ".js" from gulpfile.coffee
|
||||
```diff
|
||||
config =
|
||||
scripts:
|
||||
- source: './src/coffee/main.coffee'
|
||||
- extensions: ['.coffee']
|
||||
+ source: './src/js/main.js'
|
||||
+ extensions: ['.js']
|
||||
```
|
||||
You also can change the directory name to scripts or what ever.
|
||||
16
bower.json
Normal file
16
bower.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "gulp-template",
|
||||
"version": "0.0.0",
|
||||
"authors": [
|
||||
"Riku Rouvila <riku.rouvila@gmail.com>"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"dependencies": {}
|
||||
}
|
||||
106
gulpfile.js
Normal file
106
gulpfile.js
Normal file
@@ -0,0 +1,106 @@
|
||||
'use strict';
|
||||
|
||||
var browserify = require('browserify');
|
||||
var ecstatic = require('ecstatic');
|
||||
var gulp = require('gulp');
|
||||
var gutil = require('gulp-util');
|
||||
var livereload = require('gulp-livereload');
|
||||
var path = require('path');
|
||||
var source = require('vinyl-source-stream');
|
||||
var watchify = require('watchify');
|
||||
|
||||
var config = {
|
||||
scripts: {
|
||||
source: './src/js/main.js',
|
||||
extensions: ['.jsx'],
|
||||
destination: './public/js/',
|
||||
filename: 'bundle.js'
|
||||
},
|
||||
templates: {
|
||||
source: './src/**/*.html',
|
||||
watch: './src/**/*.html',
|
||||
destination: './public/'
|
||||
},
|
||||
styles: {
|
||||
source: './src/**/style.css',
|
||||
watch: './src/**/*.css',
|
||||
destination: './public/css/'
|
||||
},
|
||||
assets: {
|
||||
source: './src/assets/**/*.*',
|
||||
watch: './src/assets/**/*.*',
|
||||
destination: './public/'
|
||||
}
|
||||
};
|
||||
|
||||
function handleError(err) {
|
||||
gutil.log(err);
|
||||
gutil.beep();
|
||||
return this.emit('end');
|
||||
}
|
||||
|
||||
gulp.task('scripts', function() {
|
||||
var build, bundle;
|
||||
bundle = browserify({
|
||||
entries: [config.scripts.source],
|
||||
extensions: config.scripts.extensions,
|
||||
debug: false
|
||||
});
|
||||
build = bundle.bundle().on('error', handleError).pipe(source(config.scripts.filename));
|
||||
return build.pipe(gulp.dest(config.scripts.destination));
|
||||
});
|
||||
|
||||
gulp.task('templates', function() {
|
||||
return gulp.src(config.templates.source)
|
||||
.pipe(gulp.dest(config.templates.destination))
|
||||
.on('error', handleError)
|
||||
.pipe(livereload({auto: false}));
|
||||
});
|
||||
|
||||
gulp.task('styles', function() {
|
||||
return gulp.src(config.styles.source)
|
||||
.pipe(gulp.dest(config.styles.destination))
|
||||
.pipe(livereload({auto: false}));
|
||||
});
|
||||
|
||||
gulp.task('assets', function() {
|
||||
return gulp.src(config.assets.source)
|
||||
.pipe(gulp.dest(config.assets.destination));
|
||||
});
|
||||
|
||||
gulp.task('server', function() {
|
||||
return require('http').createServer(ecstatic({
|
||||
root: path.join(__dirname, 'public')
|
||||
})).listen(9001);
|
||||
});
|
||||
|
||||
gulp.task('watch', function() {
|
||||
livereload.listen();
|
||||
|
||||
gulp.watch(config.templates.watch, ['templates']);
|
||||
gulp.watch(config.styles.watch, ['styles']);
|
||||
gulp.watch(config.assets.watch, ['assets']);
|
||||
|
||||
var bundle = watchify(browserify({
|
||||
entries: [config.scripts.source],
|
||||
extensions: config.scripts.extensions,
|
||||
debug: true,
|
||||
cache: {},
|
||||
packageCache: {},
|
||||
fullPaths: true
|
||||
}));
|
||||
|
||||
return bundle.on('update', function() {
|
||||
return bundle.bundle()
|
||||
.on('error', handleError)
|
||||
.pipe(source(config.scripts.filename))
|
||||
.pipe(gulp.dest(config.scripts.destination))
|
||||
.pipe(livereload());
|
||||
}).emit('update');
|
||||
});
|
||||
|
||||
gulp.task('no-js', ['templates', 'styles', 'assets']);
|
||||
|
||||
gulp.task('build', ['scripts', 'no-js']);
|
||||
|
||||
gulp.task('default', ['watch', 'no-js', 'server']);
|
||||
44
package.json
Normal file
44
package.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "gulp-template",
|
||||
"version": "1.0.0",
|
||||
"description": "Project template for gulp.js",
|
||||
"author": "Riku Rouvila <riku.rouvila@leonidasoy.fi>",
|
||||
"license": "MIT",
|
||||
"main": "gulpfile.js",
|
||||
"scripts": {
|
||||
"prepublish": "bower install",
|
||||
"start": "gulp",
|
||||
"build": "gulp build"
|
||||
},
|
||||
"keywords": [
|
||||
"gulp",
|
||||
"template"
|
||||
],
|
||||
"dependencies": {
|
||||
"react": "^0.11.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"bower": "~1.3.5",
|
||||
"browserify": "~6.1.0",
|
||||
"ecstatic": "~0.5.3",
|
||||
"deamdify": "^0.1.1",
|
||||
"debowerify": "~0.9.1",
|
||||
"gulp": "~3.8.1",
|
||||
"gulp-autoprefixer": "1.0.1",
|
||||
"gulp-livereload": "~2.1.0",
|
||||
"gulp-minify-css": "~0.3.5",
|
||||
"gulp-streamify": "0.0.5",
|
||||
"gulp-uglify": "~1.0.1",
|
||||
"gulp-util": "~3.0.1",
|
||||
"reactify": "~0.14.0",
|
||||
"vinyl-source-stream": "~1.0.0",
|
||||
"watchify": "~2.0.0"
|
||||
},
|
||||
"browserify": {
|
||||
"transform": [
|
||||
"reactify",
|
||||
"debowerify",
|
||||
"deamdify"
|
||||
]
|
||||
}
|
||||
}
|
||||
10
src/index.html
Normal file
10
src/index.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Gulp template</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<script src="js/bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
13
src/js/app.jsx
Normal file
13
src/js/app.jsx
Normal file
@@ -0,0 +1,13 @@
|
||||
/*** @jsx React.DOM */
|
||||
|
||||
var React = require('react');
|
||||
|
||||
var APP = React.createClass({
|
||||
render:function(){
|
||||
return (
|
||||
<h1>Hello World</h1>
|
||||
)
|
||||
}
|
||||
});
|
||||
|
||||
React.renderComponent(<APP />, document.body)
|
||||
5
src/js/main.js
Normal file
5
src/js/main.js
Normal file
@@ -0,0 +1,5 @@
|
||||
/*jslint browser: true */
|
||||
'use strict';
|
||||
|
||||
require('./app');
|
||||
|
||||
3
src/style.css
Normal file
3
src/style.css
Normal file
@@ -0,0 +1,3 @@
|
||||
body, html {
|
||||
margin: 0;
|
||||
}
|
||||
Reference in New Issue
Block a user