easygo
Version:
48 lines (42 loc) • 1.48 kB
JavaScript
/**
* @file: file
* @author: cuihonglei(cuihonglei2xj@gmail.com)
* @Date: 2017-06-23 11:41:14
*/
;
const config = require('../util/config');
module.exports = {
name: 'element-name',
stopOnError: true,
exec: function (context) {
if (!context.name.match(config.elementNameRegex)) {
this.reporter.error(context.name,
'组件名称不符合规范,请参考:\n'
+ 'https://github.com/araengine/ara/master/doc/spec.md'
);
}
const files = context.getFiles();
if (files.length === 0) {
this.reporter.error(context.name,
'组件不能空,必须有index.json文件&index.vue文件'
);
return null;
}
// 验证组件中的文件都以组件名称开头
for (let i = 0, l = files.length; i < l; i++) {
if (files[i].path.indexOf(context.name) !== 0) {
this.reporter.warn(files[i].path, '请移除不属于组件' + context.name + '内的文件');
}
}
// 必须的文件
const requiredFiles = [
'index.json',
'index.vue'
];
for (let i = 0, l = requiredFiles.length; i < l; i++) {
if (!context.getFile(context.name + '/' + requiredFiles[i])) {
this.reporter.error(files[i].path, '请添加必要的文件:' + requiredFiles[i]);
}
}
}
};