Skip to content

Commit

Permalink
Bugfix & Added babel compilation and eslint check tool to ensure code…
Browse files Browse the repository at this point in the history
… quality
  • Loading branch information
erha19 committed Oct 17, 2017
1 parent 8707c9c commit 465cc51
Show file tree
Hide file tree
Showing 53 changed files with 14,309 additions and 2,079 deletions.
5 changes: 5 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"presets": [
"es2015"
]
}
143 changes: 137 additions & 6 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"root": true,
"extends": "eslint:recommended",
"parser": "babel-eslint",

"parserOptions": {
"ecmaVersion": 6,
Expand All @@ -10,12 +9,144 @@
"env": {
"es6": true,
"node": true,
"mocha": true,
"commonjs": true
"mocha": true
},

"globals": {
"weex": false,
"document": false,
"navigator": false,
"window": false,
"location": false,
"callNative": false,
"callNativeModule": false,
"callAddElement":false,
"callJS": false,
"notifyTrimMemory": false,
"markupState": false,
"compileAndRunBundle": false,
"expect": false,
"sinon": false
},

"rules": {
"indent": [2, 2],
"no-console": 0
"flowtype/no-types-missing-file-annotation": 0,
"accessor-pairs": 2,
"arrow-spacing": [2, { "before": true, "after": true }],
"block-spacing": [2, "always"],
"brace-style": [2, "stroustrup", { "allowSingleLine": true }],
"camelcase": [2, { "properties": "never" }],
"comma-dangle": [2, "never"],
"comma-spacing": [2, { "before": false, "after": true }],
"comma-style": [2, "last"],
"constructor-super": 2,
"curly": [2, "multi-line"],
"dot-location": [2, "property"],
"eol-last": 2,
"eqeqeq": [2, "allow-null"],
"generator-star-spacing": [2, { "before": true, "after": true }],
"handle-callback-err": [2, "^(err|error)$" ],
"indent": [2, 2, { "SwitchCase": 1 }],
"key-spacing": [2, { "beforeColon": false, "afterColon": true }],
"keyword-spacing": [2, { "before": true, "after": true }],
"new-cap": [2, { "newIsCap": true, "capIsNew": false }],
"new-parens": 2,
"no-array-constructor": 2,
"no-caller": 2,
"no-class-assign": 2,
"no-cond-assign": 2,
"no-const-assign": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-delete-var": 2,
"no-dupe-args": 2,
"no-dupe-class-members": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty-character-class": 2,
"no-empty-pattern": 2,
"no-eval": 2,
"no-ex-assign": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": [2, "functions"],
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-func-assign": 2,
"no-implied-eval": 2,
"no-inner-declarations": [2, "functions"],
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-label-var": 2,
"no-labels": [2, { "allowLoop": false, "allowSwitch": false }],
"no-lone-blocks": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-multiple-empty-lines": [2, { "max": 1 }],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-new-object": 2,
"no-new-require": 2,
"no-new-symbol": 2,
"no-new-wrappers": 2,
"no-obj-calls": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-path-concat": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-return-assign": [2, "except-parens"],
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-shadow-restricted-names": 2,
"no-spaced-func": 2,
"no-sparse-arrays": 2,
"no-this-before-super": 2,
"no-throw-literal": 2,
"no-trailing-spaces": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-unexpected-multiline": 2,
"no-unmodified-loop-condition": 2,
"no-unneeded-ternary": [2, { "defaultAssignment": false }],
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unused-vars": [2, { "vars": "all", "args": "none" }],
"no-useless-call": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"no-useless-escape": 2,
"no-whitespace-before-property": 2,
"no-with": 2,
"one-var": [2, { "initialized": "never" }],
// "operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }],
"padded-blocks": [2, "never"],
"quotes": [2, "single", {"avoidEscape": true, "allowTemplateLiterals": true}],
"semi": [2, "always"],
"semi-spacing": [2, { "before": false, "after": true }],
"space-before-blocks": [2, "always"],
"space-before-function-paren": [2, "always"],
"space-in-parens": [2, "never"],
"space-infix-ops": 2,
"space-unary-ops": [2, { "words": true, "nonwords": false }],
"spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }],
"template-curly-spacing": [2, "never"],
"use-isnan": 2,
"valid-typeof": 2,
"wrap-iife": [2, "any"],
"yield-star-spacing": [2, "both"],
"yoda": [2, "never"],

"no-var": 2,
"prefer-const": 2,
"object-curly-spacing": [2, "always", {
"objectsInObjects": false
}],
"array-bracket-spacing": [2, "never"]
}
}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ weexapp/
weexpackdemo/
weex-plugin/


build/
65 changes: 65 additions & 0 deletions bin/weexpack-build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/usr/bin/env node
'use strict';

var program = require('commander');
var chalk = require('chalk');
var buildAndroid = require('../build/build/Android');
var buildIOS = require('../build/build/iOS');
var buildWeb = require('../build/build/Web');

program.usage('<platform> [options]').parse(process.argv);

function printExample() {
console.log(' Examples:');
console.log();
console.log(chalk.grey(' # build weex Android project'));
console.log(' $ ' + chalk.blue('weexpack build android'));
console.log();
console.log(chalk.grey(' # build weex iOS project'));
console.log(' $ ' + chalk.blue('weexpack build ios'));
console.log();
console.log(chalk.grey(' # build weex web project'));
console.log(' $ ' + chalk.blue('weexpack build web'));
console.log();
}

program.on('--help', printExample);

function isValidPlatform(args) {
if (args && args.length) {
return args[0] === 'android' || args[0] === 'ios' || args[0] === 'web';
}
return false;
}

/**
* Run weex app on the specific platform
* @param {String} platform
*/
function build(platform, options) {
switch (platform) {
case 'android':
buildAndroid(options);break;
case 'ios':
buildIOS(options);break;
case 'web':
buildWeb(options);break;
}
}

// check if platform exist
if (program.args.length < 1) {
program.help();
process.exit();
}

if (isValidPlatform(program.args)) {
// TODO: parse config file
build(program.args[0], program.config);
} else {
console.log();
console.log(' ' + chalk.red('Unknown platform:') + ' ' + chalk.yellow(program.args[0]));
console.log();
printExample();
process.exit();
}
41 changes: 41 additions & 0 deletions bin/weexpack-create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env node
'use strict';

var program = require('commander');
var chalk = require('chalk');
var create = require('../build/create/create');
var cli = require('../build/cli');
var publish = require('../build/publish/publish');

program.usage('[project-name] [options]').on('--help', function () {
console.log(' Examples:\n');
console.log(chalk.grey(' # create a standard weex project'));
console.log(' $ ' + chalk.blue('weex create myProject'));
console.log();
}).parse(process.argv);

var args = [];
process.argv.forEach(function (arg, i) {
if (arg != '[object Object]') {
//fix commander’s bug
args.push(arg);
if (i == 1) {
args.push('create');
}
}
});

var projectName = args[3];

if (!projectName || !projectName.match(/^[$A-Z_][0-9A-Z_-]*$/i)) {
var msg = chalk.red('Invalid project name: ') + chalk.yellow(projectName);
console.log(msg);
process.exit();
}

cli(args);

if (program.args.length < 1) {
program.help();
process.exit();
}
56 changes: 56 additions & 0 deletions bin/weexpack-init.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env node
'use strict';

var program = require('commander');
var chalk = require('chalk');
var init = require('../build/init/init');
var _prompt = require('prompt');
var fs = require('fs');
var path = require('path');

program.usage('[options] [project-name]').option('-c, --config [path]', 'specify the configuration file').on('--help', function () {
console.log(' Examples:\n');
console.log(chalk.grey(' # create a standard weex project'));
console.log(' $ ' + chalk.blue('weex init myProject'));
console.log();
}).parse(process.argv);
// check if project name exist

if (program.args.length < 1) {
program.help();
process.exit();
}
var projectName = program.args[0];
if (!projectName.match(/^[$A-Z_][0-9A-Z_-]*$/i)) {
var msg = chalk.red('Invalid project name:') + chalk.yellow(projectName);
console.log(msg);
process.exit();
}
if (fs.existsSync(path.join(process.cwd(), projectName))) {
_prompt.start();
_prompt.message = '';
_prompt.delimiter = '';
_prompt.colors = false;
_prompt.get({
properties: {
confirm: {
pattern: /^(yes|no|y|n)$/gi,
description: chalk.grey('Directory ' + chalk.white(program.args[0]) + ' already exists. go on?'),
message: 'yes/no',
required: true,
default: 'no'
}
}
}, function (err, result) {
var c = result.confirm.toLowerCase();
if (c == 'y' || c == 'yes') {
init(projectName, program.config);
return;
}
console.log('Cancel Project initialization');
process.exit();
});
} else {
// initialization new project
init(projectName, program.config);
}
52 changes: 52 additions & 0 deletions bin/weexpack-platform.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env node
'use strict';

var program = require('commander');
var chalk = require('chalk');
var create = require('../build/create/create');
var cli = require('../build/cli');
var publish = require('../build/publish/publish');
program.command('add [platform-name]').option('-d, --d', 'debug').option('-a, --ali', 'add ios platform only used in alibaba group').description('add a new platform project').action(function (pluginName, options) {

var args = [];
process.argv.forEach(function (arg, i) {
if (arg != '[object Object]') {
//fix commander’s bug
args.push(arg);
if (i == 1) {
args.push('platform');
}
}
});
cli(args);
});

program.command('remove [platform-name]').description('remove a platform project').option('-d, --d', 'debug').action(function (pluginName) {
var args = [];
process.argv.forEach(function (arg, i) {
if (arg != '[object Object]') {
//fix commander’s bug
args.push(arg);
if (i == 1) {
args.push('platform');
}
}
});
cli(args);
});

program.command('list [options]').description('all installed platform project').action(function (pluginName) {
var args = [];
process.argv.forEach(function (arg, i) {
if (arg != '[object Object]') {
//fix commander’s bug
args.push(arg);
if (i == 1) {
args.push('platform');
}
}
});
cli(args);
});

program.parse(process.argv);
Loading

0 comments on commit 465cc51

Please sign in to comment.