Add ramda and gulpfile
This commit is contained in:
parent
f4f1ea6572
commit
6ad8220681
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
|
||||
test.html
|
||||
node_modules/
|
||||
dist/ffnm.min.js.map
|
||||
package-lock.json
|
||||
|
10
README.md
10
README.md
@ -84,14 +84,20 @@ class:toggle('show', '#menu')
|
||||
|
||||
## Development
|
||||
|
||||
### Install
|
||||
|
||||
```javascript
|
||||
npm i
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
```javascript
|
||||
tsc --outFile dist/ffnm.min.js src/core.ts
|
||||
gulp
|
||||
```
|
||||
|
||||
### Watch mode
|
||||
|
||||
```javascript
|
||||
tsc --watch --outFile dist/ffnm.min.js src/core.ts
|
||||
gulp dev
|
||||
```
|
||||
|
33
dist/ffnm.min.js
vendored
33
dist/ffnm.min.js
vendored
File diff suppressed because one or more lines are too long
52
gulpfile.js
Normal file
52
gulpfile.js
Normal file
@ -0,0 +1,52 @@
|
||||
//===
|
||||
// IMPORTS
|
||||
//===
|
||||
const { series, parallel, src, dest, watch } = require('gulp');
|
||||
const babel = require('gulp-babel');
|
||||
const sourcemaps = require('gulp-sourcemaps');
|
||||
const uglify = require('gulp-uglify');
|
||||
const concat = require('gulp-concat');
|
||||
|
||||
//===
|
||||
// VARIABLES
|
||||
//===
|
||||
const SRC_PATH = 'src/';
|
||||
const DIST_PATH = 'dist/';
|
||||
const DIST_JS = 'ffnm.min.js';
|
||||
const SRC_JS_VENDORS = [
|
||||
'./node_modules/ramda/dist/ramda.min.js'
|
||||
];
|
||||
|
||||
|
||||
//===
|
||||
// TASKS
|
||||
//===
|
||||
|
||||
// JS concat + sourcemaps + babel + min
|
||||
function js(cb) {
|
||||
return src(SRC_JS_VENDORS.concat([SRC_PATH + 'core.js']))
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(concat(DIST_JS))
|
||||
.pipe(babel({
|
||||
presets: ['@babel/env']
|
||||
}))
|
||||
.pipe(uglify())
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(dest(DIST_PATH));
|
||||
}
|
||||
|
||||
|
||||
//===
|
||||
// Commands
|
||||
//===
|
||||
|
||||
const build = series(js);
|
||||
|
||||
// gulp dev
|
||||
exports.dev = function () {
|
||||
build();
|
||||
watch(SRC_PATH + '*.js', js);
|
||||
}
|
||||
|
||||
// gulp
|
||||
exports.default = build;
|
4179
package-lock.json
generated
4179
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
31
package.json
Normal file
31
package.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "ffnm",
|
||||
"version": "1.0.0",
|
||||
"description": "Simple plugin to avoid writing Javascript in trivial tasks.",
|
||||
"main": "gulpfile.js",
|
||||
"dependencies": {
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-babel": "^8.0.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-sourcemaps": "^2.6.5",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"ramda": "^0.27.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.10.4",
|
||||
"@babel/preset-env": "^7.10.4"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/tanrax/FFNM.git"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/tanrax/FFNM/issues"
|
||||
},
|
||||
"homepage": "https://github.com/tanrax/FFNM#readme"
|
||||
}
|
32
src/core.js
Normal file
32
src/core.js
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
//===
|
||||
// VARIABLES
|
||||
//===
|
||||
const EVENTS = ['i-click', 'i-scroll-up', 'i-scroll-down', 'i-hover'];
|
||||
|
||||
//===
|
||||
// FUNCTIONS
|
||||
//===
|
||||
function validateSyntax() {
|
||||
|
||||
// Get every items from EVENTS
|
||||
|
||||
// Check all event syntax
|
||||
return EVENTS.map((event) => {
|
||||
return R.map((element) => {
|
||||
console.log(element.getAttribute(event));
|
||||
return /^${event}/.test(element.getAttribute(event));
|
||||
}, document.querySelectorAll(`[${event}]`)).every(item => item);
|
||||
}).every(event => event);
|
||||
}
|
||||
|
||||
|
||||
//===
|
||||
// LINTER
|
||||
//===
|
||||
|
||||
|
||||
//===
|
||||
// INIT
|
||||
//===
|
||||
validateSyntax();
|
33
src/core.ts
33
src/core.ts
@ -1,33 +0,0 @@
|
||||
|
||||
//===
|
||||
// VARIABLES
|
||||
//===
|
||||
enum EVENTS {'i-click', 'i-scroll-up', 'i-scroll-down', 'i-hover'}
|
||||
|
||||
//===
|
||||
// FUNCTIONS
|
||||
//===
|
||||
function validateSyntax(): boolean {
|
||||
|
||||
// Get every items from EVENTS
|
||||
let eventsKeys: string[] = R.filter(key => !isNaN(Number(EVENTS[key])), Object.keys(EVENTS));
|
||||
|
||||
// Check all event syntax
|
||||
return eventsKeys.map((event) => {
|
||||
return R.map((element) => {
|
||||
console.log(element.getAttribute(event))
|
||||
return /^${event}/.test(element.getAttribute(event))
|
||||
}, document.querySelectorAll(`[${event}]`)).every(item => item)
|
||||
}).every(event => event)
|
||||
}
|
||||
|
||||
|
||||
//===
|
||||
// LINTER
|
||||
//===
|
||||
|
||||
|
||||
//===
|
||||
// INIT
|
||||
//===
|
||||
validateSyntax()
|
Loading…
Reference in New Issue
Block a user