Skip to content

Commit 96eb48e

Browse files
committed
Initial seed checkin.
0 parents  commit 96eb48e

File tree

17 files changed

+3343
-0
lines changed

17 files changed

+3343
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules
2+
.DS_Store
3+
npm*.log
4+
lib

.npmignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
src
2+
node_modules
3+
.vscode
4+
5+
.gitignore
6+
.gitattributes
7+
.editorconfig
8+
gulpfile.js

.vscode/launch.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"name": "Launch",
6+
"type": "node",
7+
"request": "launch",
8+
"program": "node_modules/gulp/bin/gulp.js",
9+
"stopOnEntry": false,
10+
"args": [],
11+
"cwd": ".",
12+
"runtimeExecutable": null,
13+
"runtimeArgs": [
14+
"--nolazy"
15+
],
16+
"env": {
17+
"NODE_ENV": "development"
18+
},
19+
"externalConsole": false,
20+
"sourceMaps": false,
21+
"outDir": null
22+
},
23+
{
24+
"name": "Attach",
25+
"type": "node",
26+
"request": "attach",
27+
"port": 5858
28+
}
29+
]
30+
}

.vscode/settings.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
// Controls the rendering size of tabs in characters. Accepted values: "auto", 2, 4, 6, etc. If set to "auto", the value will be guessed when a file is opened.
3+
"editor.tabSize": 2,
4+
// When enabled, will trim trailing whitespace when you save a file.
5+
"files.trimTrailingWhitespace": true,
6+
// Controls whether the editor should render whitespace characters
7+
"editor.renderWhitespace": true,
8+
"editor.insertSpaces": true,
9+
// Configure glob patterns for excluding files and folders in searches. Inherits all glob patterns from the file.exclude setting.
10+
"files.exclude": {
11+
"**/.git": true,
12+
"**/.DS_Store": true,
13+
"**/node_modules": true,
14+
"**/lib": true
15+
},
16+
// Configure glob patterns for excluding files and folders in searches. Inherits all glob patterns from the file.exclude setting.
17+
"search.exclude": {
18+
}
19+
}

README.md

Whitespace-only changes.

gulpfile.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
'use strict';
2+
3+
let gulp = require('gulp');
4+
let config = {
5+
paths: {
6+
libFolder: 'lib',
7+
sourceMatch: [
8+
'src/**/*.ts',
9+
'typings/tsd.d.ts'
10+
],
11+
testMatch: [
12+
'lib/**/*.test.js'
13+
]
14+
}
15+
}
16+
17+
gulp.task('build', () => {
18+
let ts = require('gulp-typescript');
19+
let plumber = require('gulp-plumber');
20+
let merge = require('merge2');
21+
let lint = require('gulp-tslint');
22+
let tsConfig = require('./tsconfig.json');
23+
let paths = config.paths;
24+
let errorCount = 0;
25+
let allStreams = [];
26+
let tsProject = ts.createProject(tsConfig.compilerOptions);
27+
let gutil = require('gulp-util');
28+
let chalk = require('chalk');
29+
let sourceStream = gulp.src(paths.sourceMatch);
30+
31+
sourceStream
32+
.pipe(lint({
33+
configuration: require('./tslint.json')
34+
}))
35+
.pipe(lint.report('full', {
36+
emitError: false
37+
}));
38+
39+
let tsResult = sourceStream
40+
.pipe(plumber({
41+
errorHandler: function(error) {
42+
// console.log(error);
43+
errorCount++;
44+
}
45+
}))
46+
.pipe(ts(tsProject, undefined, ts.reporter.longReporter()));
47+
48+
allStreams.push(tsResult.js.pipe(gulp.dest(paths.libFolder)));
49+
allStreams.push(tsResult.dts.pipe(gulp.dest(paths.libFolder)));
50+
51+
let mergedStream = merge(allStreams);
52+
53+
mergedStream.on('queueDrain', function() {
54+
if (errorCount) {
55+
// throw new gutil.PluginError('msg', `[gulp-typescript] TypeScript error(s): ${ chalk.red(errorCount) }`, { showStack: false });
56+
}
57+
});
58+
59+
return mergedStream;
60+
});
61+
62+
gulp.task('test', ['build'], () => {
63+
let mocha = require('gulp-mocha');
64+
65+
return gulp.src(config.paths.testMatch, { read: false })
66+
.pipe(mocha());
67+
});
68+
69+
gulp.task('default', ['build']);

package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "gulp-core-build-sass",
3+
"version": "0.0.1",
4+
"description": "",
5+
"main": "lib/index.js",
6+
"typings": "lib/index.d.ts",
7+
"license": "MIT",
8+
"peerDependencies": {
9+
"gulp-core-build": "^0.3.0",
10+
"gulp": "^3.9.1",
11+
"load-themed-styles": "^1.0.4"
12+
},
13+
"dependencies": {
14+
"gulp-sass": "^2.2.0",
15+
"gulp-texttojs": "^1.0.3",
16+
"merge2": "^1.0.1"
17+
}
18+
}

src/SassTask.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import {
2+
GulpTask
3+
} from 'gulp-core-build';
4+
5+
export interface ISassTaskConfig {
6+
sassMatch?: string[];
7+
}
8+
9+
export class SassTask extends GulpTask<ISassTaskConfig> {
10+
public name = 'sass';
11+
public taskConfig: ISassTaskConfig = {
12+
sassMatch: [
13+
'src/**/*.scss'
14+
]
15+
};
16+
17+
public executeTask(gulp, completeCallback): any {
18+
let sass = require('gulp-sass');
19+
let texttojs = require('gulp-texttojs');
20+
let merge = require('merge2');
21+
22+
let commonJSResult = gulp.src(this.taskConfig.sassMatch)
23+
.pipe(sass.sync({
24+
importer: (url, prev, done) => ({ file: patchSassUrl(url) })
25+
}).on('error', sass.logError))
26+
.pipe(texttojs({
27+
ext: '.scss.js',
28+
isExtensionAppended: false,
29+
template: `require('load-themed-styles').loadStyles(<%= content %>);`
30+
}))
31+
.pipe(gulp.dest(this.buildConfig.libFolder));
32+
33+
if (this.buildConfig.libAMDFolder) {
34+
let amdResult = gulp.src(this.taskConfig.sassMatch)
35+
.pipe(sass.sync({
36+
importer: (url, prev, done) => ({ file: patchSassUrl(url) })
37+
}).on('error', sass.logError))
38+
.pipe(texttojs({
39+
ext: '.scss.js',
40+
isExtensionAppended: false,
41+
template: `define(['load-themed-styles'], function(loadStyles) { loadStyles.loadStyles(<%= content %>); });`
42+
}))
43+
.pipe(gulp.dest(this.buildConfig.libAMDFolder));
44+
45+
return merge(commonJSResult, amdResult);
46+
}
47+
48+
return commonJSResult;
49+
}
50+
}
51+
52+
function patchSassUrl(url) {
53+
if (url[0] === '~') {
54+
url = 'node_modules/' + url.substr(1);
55+
} else if (url === 'stdin') {
56+
url = '';
57+
}
58+
59+
return url;
60+
}

src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { SassTask } from './SassTask';
2+
3+
export const sass = new SassTask();
4+
export default sass;

tsconfig.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"module": "commonjs",
5+
"jsx": "react",
6+
"declaration": true,
7+
"sourceMap": true
8+
}
9+
}

0 commit comments

Comments
 (0)