Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
c5cfa79f14 | |||
32465d2556 | |||
9edab1b3ec | |||
c0ee2996ce | |||
f1d89beb06 | |||
0c0449527d | |||
3a76e9b572 | |||
3dddb80b43 | |||
2ba06f27dc | |||
228f855a39 | |||
55ac57a122 | |||
7da57901dd | |||
12500a0900 | |||
36371d9469 | |||
4e9874a639 | |||
e55e30bdb3 | |||
44aed02dd3 | |||
8d8d7e7ff4 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ node_modules/
|
||||
|
||||
ts/*.js
|
||||
ts/*.js.map
|
||||
ts/typings/
|
||||
|
43
README.md
43
README.md
@ -1,39 +1,6 @@
|
||||
# gulp-bootstrap
|
||||
works with gulp, but does nothing. Use it to bootstrap your own gulp plugin with TypeScript, Travis and npm.
|
||||
|
||||
### Buildstatus/Dependencies
|
||||
[](https://travis-ci.org/pushrocks/gulp-bootstrap)
|
||||
[](https://david-dm.org/pushrocks/gulp-bootstrap#info=devDependencies)
|
||||
|
||||
### Usage
|
||||
This npm package comes with everything you need to start your own gulp plugin.
|
||||
|
||||
Features:
|
||||
|
||||
* TypeScript: Code your plugin in TypeScript
|
||||
* Use gulp to compile TypeScript without the global gulp CLI Tool.
|
||||
* Use travis to deploy to npm
|
||||
* Have a master branch for the latest dev version
|
||||
* Have a release branch for the latest npm version
|
||||
|
||||
This package **doesn't require global gulp** (just local -> simply do npm install`) to compile TypeScript.
|
||||
|
||||
* to compile TypeScript do `npm test` (You should chain your own tests to this command later on)
|
||||
* to setup release do `npm run setup`
|
||||
* to release a patch do `npm run release`
|
||||
|
||||
We recommend using travis for npm releasing and test integration.
|
||||
|
||||
#### The structure
|
||||
|
||||
```
|
||||
gulp-bootstrap/
|
||||
|
|
||||
|- ts/
|
||||
| |- compile/
|
||||
| | |- compile.js **** contains gulp task`
|
||||
| |- index.ts **** Your main TypeScript file.
|
||||
|
|
||||
|- index.js **** the compiled module
|
||||
```
|
||||
# smartfile
|
||||
make files easily accessible for processing in javascript.
|
||||
|
||||
## Supported file types:
|
||||
* .yml .yaml
|
||||
* .json
|
||||
|
31
index.d.ts
vendored
Normal file
31
index.d.ts
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
/// <reference path="ts/typings/main.d.ts" />
|
||||
declare module SmartfilePlugins {
|
||||
var init: () => {
|
||||
beautylog: any;
|
||||
fs: any;
|
||||
path: any;
|
||||
vinyl: any;
|
||||
vinylFile: any;
|
||||
yaml: any;
|
||||
requireReload: any;
|
||||
};
|
||||
}
|
||||
declare module SmartfileSimple {
|
||||
var init: (objectArg: any) => void;
|
||||
}
|
||||
declare module SmartfileVinyl {
|
||||
var init: (objectArg: any) => void;
|
||||
}
|
||||
declare module SmartfileRequire {
|
||||
var init: (objectArg: any) => void;
|
||||
}
|
||||
declare var plugins: {
|
||||
beautylog: any;
|
||||
fs: any;
|
||||
path: any;
|
||||
vinyl: any;
|
||||
vinylFile: any;
|
||||
yaml: any;
|
||||
requireReload: any;
|
||||
};
|
||||
declare var smartfile: any;
|
103
index.js
103
index.js
@ -1,10 +1,93 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
var through = require("through2");
|
||||
var path = require("path");
|
||||
module.exports = function (jadeTemplate, mojo) {
|
||||
if (mojo === void 0) { mojo = undefined; }
|
||||
return through.obj(function (file, enc, cb) {
|
||||
//run callback function to signal end of plugin process.
|
||||
return cb(null, file);
|
||||
});
|
||||
};
|
||||
#!/usr/bin/env node
|
||||
|
||||
/// <reference path="./index.ts" />
|
||||
var SmartfilePlugins;
|
||||
(function (SmartfilePlugins) {
|
||||
SmartfilePlugins.init = function () {
|
||||
var plugins = {
|
||||
beautylog: require("beautylog"),
|
||||
fs: require("fs-extra"),
|
||||
path: require("path"),
|
||||
vinyl: require("vinyl"),
|
||||
vinylFile: require("vinyl-file"),
|
||||
yaml: require("js-yaml"),
|
||||
requireReload: require("require-reload")
|
||||
};
|
||||
return plugins;
|
||||
};
|
||||
})(SmartfilePlugins || (SmartfilePlugins = {}));
|
||||
/// <reference path="./index.ts" />
|
||||
var SmartfileSimple;
|
||||
(function (SmartfileSimple) {
|
||||
/**
|
||||
* reads a file content to a String
|
||||
* @param filePath
|
||||
* @returns {string|Buffer|any}
|
||||
*/
|
||||
var readFileToString = function (filePath) {
|
||||
var fileString;
|
||||
fileString = plugins.fs.readFileSync(filePath, "utf8");
|
||||
return fileString;
|
||||
};
|
||||
var readFileToObject = function (filePath, fileTypeArg) {
|
||||
if (fileTypeArg === void 0) { fileTypeArg = "undefined"; }
|
||||
var fileType;
|
||||
if (fileTypeArg == "undefined") {
|
||||
fileType = plugins.path.extname(filePath);
|
||||
}
|
||||
else {
|
||||
fileType = fileTypeArg;
|
||||
}
|
||||
fileType = fileType.replace(/\.([a-z]*)/, "$1"); //remove . form fileType
|
||||
switch (fileType) {
|
||||
case "yml":
|
||||
case "yaml":
|
||||
try {
|
||||
return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8'));
|
||||
}
|
||||
catch (e) {
|
||||
plugins.beautylog.error("check that " + filePath.blue + " points to a valid file");
|
||||
}
|
||||
break;
|
||||
case "json":
|
||||
return plugins.fs.readJsonSync(filePath, {});
|
||||
break;
|
||||
}
|
||||
};
|
||||
SmartfileSimple.init = function (objectArg) {
|
||||
objectArg.readFileToString = readFileToString;
|
||||
objectArg.readFileToObject = readFileToObject;
|
||||
};
|
||||
})(SmartfileSimple || (SmartfileSimple = {}));
|
||||
/// <reference path="./index.ts" />
|
||||
var SmartfileVinyl;
|
||||
(function (SmartfileVinyl) {
|
||||
var readFileToVinyl = function (filePathArg, options) {
|
||||
if (options === void 0) { options = {}; }
|
||||
return plugins.vinylFile.readSync(filePathArg, options);
|
||||
};
|
||||
SmartfileVinyl.init = function (objectArg) {
|
||||
objectArg.readFileToVinyl = readFileToVinyl;
|
||||
};
|
||||
})(SmartfileVinyl || (SmartfileVinyl = {}));
|
||||
/// <reference path="./index.ts" />
|
||||
var SmartfileRequire;
|
||||
(function (SmartfileRequire) {
|
||||
var requireReload = function (path) {
|
||||
return plugins.requireReload(path);
|
||||
};
|
||||
SmartfileRequire.init = function (objectArg) {
|
||||
objectArg.requireReload = requireReload;
|
||||
};
|
||||
})(SmartfileRequire || (SmartfileRequire = {}));
|
||||
/// <reference path="./typings/main.d.ts" />
|
||||
/// <reference path="./smartfile.plugins.ts" />
|
||||
/// <reference path="./smartfile.simple.ts" />
|
||||
/// <reference path="./smartfile.vinyl.ts" />
|
||||
/// <reference path="./smartfile.require.ts" />
|
||||
var plugins = SmartfilePlugins.init();
|
||||
var smartfile = {};
|
||||
SmartfileSimple.init(smartfile);
|
||||
SmartfileVinyl.init(smartfile);
|
||||
SmartfileRequire.init(smartfile);
|
||||
module.exports = smartfile;
|
||||
|
19
package.json
19
package.json
@ -1,13 +1,14 @@
|
||||
{
|
||||
"name": "smartfile",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.10",
|
||||
"description": "offers smart ways to work with files in nodejs",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "(cd ts/compile && node compile.js)",
|
||||
"test": "(npmts)",
|
||||
"reinstall": "(rm -r node_modules && npm install)",
|
||||
"release": "(git pull origin master && npm version patch && git push origin master && git checkout release && git merge master && git push origin release && git checkout master)",
|
||||
"startdev": "(git checkout master && git pull origin master)"
|
||||
"update": "(git checkout master && git pull origin master && npm install)",
|
||||
"upgrade": "(npm run update) && (ncu upgradeAll && npm install)"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -24,10 +25,16 @@
|
||||
},
|
||||
"homepage": "https://github.com/pushrocks/smartfile",
|
||||
"dependencies": {
|
||||
"pushrocks": "^1.0.18"
|
||||
"beautylog": "2.0.6",
|
||||
"fs-extra": "0.26.5",
|
||||
"js-yaml": "3.5.2",
|
||||
"require-reload": "0.2.2",
|
||||
"vinyl": "1.1.1",
|
||||
"vinyl-file": "2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"gulp": "3.9.0",
|
||||
"gulp-typescript": "2.9.2"
|
||||
"beautylog": "2.0.7",
|
||||
"npmts": "2.0.3",
|
||||
"should": "^8.2.1"
|
||||
}
|
||||
}
|
||||
|
8
test/mytest.json
Normal file
8
test/mytest.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"key1": "this works",
|
||||
"key2": "this works too",
|
||||
"key3": {
|
||||
"nestedkey1": "hello"
|
||||
}
|
||||
}
|
||||
|
1
test/mytest.txt
Normal file
1
test/mytest.txt
Normal file
@ -0,0 +1 @@
|
||||
Some TestString &&%$
|
4
test/mytest.yaml
Normal file
4
test/mytest.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
key1: this works
|
||||
key2: this works too
|
||||
key3:
|
||||
nestedkey1: hello
|
30
test/test.js
Normal file
30
test/test.js
Normal file
@ -0,0 +1,30 @@
|
||||
/// <reference path="typings/main.d.ts" />
|
||||
var smartfile = require("../index.js");
|
||||
var beautylog = require("beautylog");
|
||||
var should = require("should");
|
||||
var vinyl = require("vinyl");
|
||||
describe("smartfile", function () {
|
||||
describe(".readFileToString".yellow, function () {
|
||||
it("should read a file to a string", function () {
|
||||
should.equal(smartfile.readFileToString("./test/mytest.txt"), "Some TestString &&%$");
|
||||
});
|
||||
});
|
||||
describe(".readFileToObject".yellow, function () {
|
||||
it("should read an " + ".yaml".blue + " file to an object", function () {
|
||||
var testData = smartfile.readFileToObject("./test/mytest.yaml");
|
||||
testData.should.have.property("key1", "this works");
|
||||
testData.should.have.property("key2", "this works too");
|
||||
});
|
||||
it("should read an " + ".json".blue + " file to an object", function () {
|
||||
var testData = smartfile.readFileToObject("./test/mytest.json");
|
||||
testData.should.have.property("key1", "this works");
|
||||
testData.should.have.property("key2", "this works too");
|
||||
});
|
||||
});
|
||||
describe(".readFileToVinyl".yellow, function () {
|
||||
it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan, function () {
|
||||
var testData = smartfile.readFileToVinyl("./test/mytest.json");
|
||||
(vinyl.isVinyl(testData)).should.be.true();
|
||||
});
|
||||
});
|
||||
});
|
@ -1,21 +0,0 @@
|
||||
// import gulp
|
||||
var gulp = require("gulp")
|
||||
var gulpTypescript = require("gulp-typescript");
|
||||
var pr = require("pushrocks");
|
||||
|
||||
gulp.task('compileTS', function() {
|
||||
var stream = gulp.src('../index.ts')
|
||||
.pipe(gulpTypescript({
|
||||
out: "index.js"
|
||||
}))
|
||||
.pipe(gulp.dest("../../"));
|
||||
return stream;
|
||||
});
|
||||
|
||||
gulp.task('default',['compileTS'], function() {
|
||||
pr.beautylog.success('Typescript compiled');
|
||||
});
|
||||
|
||||
//lets tell gulp to start with the default task.
|
||||
pr.beautylog.log('Starting Gulp to compile TypeScript');
|
||||
gulp.start.apply(gulp, ['default']);
|
@ -1,2 +0,0 @@
|
||||
# How to compile.
|
||||
Make sure gulp and gulp-taypescript from npm are available. Then run the gulpfile in this directory.
|
23
ts/index.ts
23
ts/index.ts
@ -1,12 +1,17 @@
|
||||
/// <reference path="typings/tsd.d.ts" />
|
||||
var through = require("through2");
|
||||
var path = require("path");
|
||||
/// <reference path="./typings/main.d.ts" />
|
||||
/// <reference path="./smartfile.plugins.ts" />
|
||||
/// <reference path="./smartfile.simple.ts" />
|
||||
/// <reference path="./smartfile.vinyl.ts" />
|
||||
/// <reference path="./smartfile.require.ts" />
|
||||
var plugins = SmartfilePlugins.init();
|
||||
|
||||
module.exports = (jadeTemplate,mojo = undefined) => {
|
||||
|
||||
return through.obj((file, enc, cb) => {
|
||||
var smartfile:any = {};
|
||||
SmartfileSimple.init(smartfile);
|
||||
SmartfileVinyl.init(smartfile);
|
||||
SmartfileRequire.init(smartfile);
|
||||
|
||||
//run callback function to signal end of plugin process.
|
||||
return cb(null, file);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
module.exports = smartfile;
|
||||
|
15
ts/smartfile.plugins.ts
Normal file
15
ts/smartfile.plugins.ts
Normal file
@ -0,0 +1,15 @@
|
||||
/// <reference path="./index.ts" />
|
||||
module SmartfilePlugins {
|
||||
export var init = function() {
|
||||
var plugins = {
|
||||
beautylog: require("beautylog"),
|
||||
fs: require("fs-extra"),
|
||||
path: require("path"),
|
||||
vinyl: require("vinyl"),
|
||||
vinylFile: require("vinyl-file"),
|
||||
yaml: require("js-yaml"),
|
||||
requireReload: require("require-reload")
|
||||
};
|
||||
return plugins;
|
||||
}
|
||||
}
|
10
ts/smartfile.require.ts
Normal file
10
ts/smartfile.require.ts
Normal file
@ -0,0 +1,10 @@
|
||||
/// <reference path="./index.ts" />
|
||||
module SmartfileRequire {
|
||||
var requireReload = function(path:string){
|
||||
return plugins.requireReload(path);
|
||||
};
|
||||
|
||||
export var init = function(objectArg){
|
||||
objectArg.requireReload = requireReload;
|
||||
}
|
||||
}
|
39
ts/smartfile.simple.ts
Normal file
39
ts/smartfile.simple.ts
Normal file
@ -0,0 +1,39 @@
|
||||
/// <reference path="./index.ts" />
|
||||
module SmartfileSimple {
|
||||
/**
|
||||
* reads a file content to a String
|
||||
* @param filePath
|
||||
* @returns {string|Buffer|any}
|
||||
*/
|
||||
var readFileToString = function(filePath) {
|
||||
var fileString;
|
||||
fileString = plugins.fs.readFileSync(filePath, "utf8");
|
||||
return fileString;
|
||||
};
|
||||
var readFileToObject = function(filePath,fileTypeArg = "undefined") {
|
||||
var fileType;
|
||||
if (fileTypeArg == "undefined") {
|
||||
fileType = plugins.path.extname(filePath);
|
||||
} else {
|
||||
fileType = fileTypeArg;
|
||||
}
|
||||
fileType = fileType.replace(/\.([a-z]*)/,"$1"); //remove . form fileType
|
||||
switch (fileType) {
|
||||
case "yml" :
|
||||
case "yaml":
|
||||
try {
|
||||
return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8'));
|
||||
} catch (e){
|
||||
plugins.beautylog.error("check that " + filePath.blue + " points to a valid file");
|
||||
}
|
||||
break;
|
||||
case "json":
|
||||
return plugins.fs.readJsonSync(filePath,{});
|
||||
break;
|
||||
}
|
||||
};
|
||||
export var init = function(objectArg) {
|
||||
objectArg.readFileToString = readFileToString;
|
||||
objectArg.readFileToObject = readFileToObject;
|
||||
};
|
||||
}
|
9
ts/smartfile.vinyl.ts
Normal file
9
ts/smartfile.vinyl.ts
Normal file
@ -0,0 +1,9 @@
|
||||
/// <reference path="./index.ts" />
|
||||
module SmartfileVinyl {
|
||||
var readFileToVinyl = function(filePathArg,options = {}) {
|
||||
return plugins.vinylFile.readSync(filePathArg,options);
|
||||
};
|
||||
export var init = function(objectArg) {
|
||||
objectArg.readFileToVinyl = readFileToVinyl;
|
||||
};
|
||||
}
|
36
ts/test.ts
Normal file
36
ts/test.ts
Normal file
@ -0,0 +1,36 @@
|
||||
/// <reference path="typings/main.d.ts" />
|
||||
var smartfile = require("../index.js");
|
||||
var beautylog = require("beautylog");
|
||||
var should = require("should");
|
||||
var vinyl = require("vinyl");
|
||||
describe("smartfile",function(){
|
||||
describe(".readFileToString".yellow,function(){
|
||||
it("should read a file to a string",function(){
|
||||
should.equal(
|
||||
smartfile.readFileToString("./test/mytest.txt"),
|
||||
"Some TestString &&%$"
|
||||
);
|
||||
});
|
||||
});
|
||||
describe(".readFileToObject".yellow,function(){
|
||||
it("should read an " + ".yaml".blue + " file to an object",function(){
|
||||
var testData = smartfile.readFileToObject("./test/mytest.yaml");
|
||||
testData.should.have.property("key1","this works");
|
||||
testData.should.have.property("key2","this works too");
|
||||
|
||||
});
|
||||
it("should read an " + ".json".blue + " file to an object",function(){
|
||||
var testData = smartfile.readFileToObject("./test/mytest.json");
|
||||
testData.should.have.property("key1","this works");
|
||||
testData.should.have.property("key2","this works too");
|
||||
|
||||
});
|
||||
});
|
||||
describe(".readFileToVinyl".yellow,function(){
|
||||
it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){
|
||||
var testData = smartfile.readFileToVinyl("./test/mytest.json");
|
||||
(vinyl.isVinyl(testData)).should.be.true();
|
||||
|
||||
});
|
||||
});
|
||||
});
|
12
ts/tsd.json
12
ts/tsd.json
@ -1,12 +0,0 @@
|
||||
{
|
||||
"version": "v4",
|
||||
"repo": "borisyankov/DefinitelyTyped",
|
||||
"ref": "master",
|
||||
"path": "typings",
|
||||
"bundle": "typings/tsd.d.ts",
|
||||
"installed": {
|
||||
"node/node.d.ts": {
|
||||
"commit": "efa0c1196d7280640e624ac1e7fa604502e7bd63"
|
||||
}
|
||||
}
|
||||
}
|
7
ts/typings.json
Normal file
7
ts/typings.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"ambientDependencies": {
|
||||
"browserify": "github:DefinitelyTyped/DefinitelyTyped/browserify/browserify.d.ts",
|
||||
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
|
||||
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
|
||||
}
|
||||
}
|
2079
ts/typings/node/node.d.ts
vendored
2079
ts/typings/node/node.d.ts
vendored
File diff suppressed because it is too large
Load Diff
1
ts/typings/tsd.d.ts
vendored
1
ts/typings/tsd.d.ts
vendored
@ -1 +0,0 @@
|
||||
/// <reference path="node/node.d.ts" />
|
Reference in New Issue
Block a user