automan-cmd 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +56 -0
  3. package/bin/automan +3 -0
  4. package/bin/automan-build +3 -0
  5. package/bin/automan-config +3 -0
  6. package/bin/automan-create +3 -0
  7. package/bin/automan-publish +3 -0
  8. package/lib/automan-build.js +41 -0
  9. package/lib/automan-config.js +82 -0
  10. package/lib/automan-create.js +137 -0
  11. package/lib/automan-publish.js +331 -0
  12. package/lib/index.js +13 -0
  13. package/lib/install.js.tpl +47 -0
  14. package/lib/util.js +174 -0
  15. package/package.json +37 -0
  16. package/tpl/.babelrc +16 -0
  17. package/tpl/.browserslistrc +3 -0
  18. package/tpl/.eslintignore +2 -0
  19. package/tpl/.eslintrc.js +228 -0
  20. package/tpl/.gitignore.ejs +12 -0
  21. package/tpl/.postcssrc.js +12 -0
  22. package/tpl/README.md +1 -0
  23. package/tpl/changelog.md +1 -0
  24. package/tpl/editor/index.vue +45 -0
  25. package/tpl/icon.png +0 -0
  26. package/tpl/jsconfig.json +7 -0
  27. package/tpl/package.json.ejs +66 -0
  28. package/tpl/preview/app.vue +326 -0
  29. package/tpl/preview/attr/Data.vue +69 -0
  30. package/tpl/preview/attr/Resource.vue +79 -0
  31. package/tpl/preview/attr/com.vue +21 -0
  32. package/tpl/preview/attr/index.js +16 -0
  33. package/tpl/preview/components/Attribute.vue +365 -0
  34. package/tpl/preview/components/FitImg.vue +152 -0
  35. package/tpl/preview/components/ImgViewer.vue +80 -0
  36. package/tpl/preview/components/Loading.vue +55 -0
  37. package/tpl/preview/components/Toast.vue +111 -0
  38. package/tpl/preview/index.js +22 -0
  39. package/tpl/preview/index.tpl +13 -0
  40. package/tpl/preview/lib/ESlog.js +46 -0
  41. package/tpl/preview/lib/Util.js +57 -0
  42. package/tpl/preview/lib/fetch.js +139 -0
  43. package/tpl/preview/lib/index.js +15 -0
  44. package/tpl/preview/lib/vue/filters.js +53 -0
  45. package/tpl/preview/lib/vue/index.js +9 -0
  46. package/tpl/preview/lib/vue/mixin.js +166 -0
  47. package/tpl/preview/mint-ui/message-box/index.js +1503 -0
  48. package/tpl/preview/mint-ui/message-box/style.css +159 -0
  49. package/tpl/preview/mint-ui/popup/index.js +1046 -0
  50. package/tpl/preview/mint-ui/popup/style.css +115 -0
  51. package/tpl/preview/mint-ui/spinner/index.js +657 -0
  52. package/tpl/preview/mint-ui/spinner/style.css +227 -0
  53. package/tpl/preview/mint-ui/swipe/index.js +907 -0
  54. package/tpl/preview/mint-ui/swipe/style.css +43 -0
  55. package/tpl/preview/mint-ui/swipe-item/index.js +171 -0
  56. package/tpl/preview/mint-ui/swipe-item/style.css +1 -0
  57. package/tpl/preview/style.css +126 -0
  58. package/tpl/server.config.js +6 -0
  59. package/tpl/src/assets/css/index.scss +29 -0
  60. package/tpl/src/example.vue +165 -0
  61. package/tpl/src/index.vue.ejs +32 -0
  62. package/tpl/webpack.config.js.ejs +267 -0
  63. package/tpl/yarn.lock +6037 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,65 @@
1
+ ## 1.0.13
2
+ > 使用Axios的自定义封装替换原有的fetch.js的网络请求方式,使前端请求API方式与H5活动保持一致。
3
+
4
+ ## 1.0.14
5
+ > 增加publish register选项
6
+ > 删除手动输入token覆盖本地已有配置的逻辑
7
+
8
+ ## 1.0.15
9
+ > 本地解决预览时候分辨率切换的问题
10
+ > 添加组件环境字段
11
+
12
+ ## 1.0.16
13
+ > 发布的长选项 register 改成 registry 使其与config名称统一,短选项不受影响。
14
+ > README 修改
15
+
16
+ ## 1.1.0
17
+ > 用axios替换utils中已经不建议使用的包request-promise
18
+
19
+ ## 1.1.1
20
+ > 创建时增加是否公开询问,公开代表官方组件,私有代表个人组件。
21
+
22
+ ## 1.1.5
23
+ > 修改组件公开的询问方式
24
+
25
+ ## 1.2.0
26
+ > 移除组件打包进度显示
27
+ > 删除全部request、request-promise过期的node包,使用axios替换,涉及功能:组件上传、组件检查、组件新增、获取认证信息
28
+
29
+ ## 1.3.1
30
+ > 添加组件开发时支持编辑器调试功能
31
+
32
+ ## 1.3.2
33
+ > 添加自定义编辑器配置
34
+ > 删除错误警告
35
+
36
+ ## 1.4.0
37
+ > 更改公共路径配置方式
38
+
39
+ ## 2.0.1
40
+ > 修改devtool模式
41
+
42
+ ## 2.0.2
43
+ > build失败终止进程
44
+ > 细节修复
45
+
46
+ ## 2.0.3
47
+ > 增加postcss依赖&升级postcss-loader至4版本
48
+
49
+ ## 2.1.0
50
+ > 使用vue-draggable-resizable替换vue-drag-resize
51
+
52
+ ## 2.1.1
53
+ > 修改组件导出机制
54
+
55
+ ## 2.1.2
56
+ > 添加postcss-unit-processor默认配置
57
+
58
+ ## 2.1.3
59
+ > 修复一处问题代码
60
+
61
+ ## 2.1.4
62
+ > 修改初始文件assets结构并给定页面默认初始样式
63
+
64
+ ## 2.1.5
65
+ > 调整webpack中babel-loader选项,使用独立配置
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # 奥特曼脚手架
2
+
3
+ ## 全局安装
4
+
5
+ ```
6
+ npm install automan-cmd -g
7
+ ```
8
+
9
+ ## 查看命令
10
+
11
+ ```
12
+ automan
13
+ ```
14
+
15
+ ## 新建项目
16
+
17
+ ```
18
+ automan create projectName
19
+ ```
20
+
21
+ ## 查看配置
22
+
23
+ ```
24
+ automan config
25
+ ```
26
+
27
+ ## 配置域名
28
+
29
+ ```
30
+ automan config registry xxx
31
+ ```
32
+
33
+ ## 配置token
34
+
35
+ ```
36
+ automan config token xxx
37
+ ```
38
+
39
+ ## 打包项目
40
+
41
+ ```
42
+ automan build
43
+ ```
44
+
45
+ ## 发布项目
46
+
47
+ ```
48
+ 使用已经配置好的token
49
+ automan publish
50
+
51
+ 手动替换想设置的 registry
52
+ automan publish -r [host]
53
+
54
+ 手动替换想设置的token
55
+ automan publish -t [access-token]
56
+ ```
package/bin/automan ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../lib/')
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../lib/automan-build.js')()
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../lib/automan-config.js').start()
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../lib/automan-create.js')()
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../lib/automan-publish.js')()
@@ -0,0 +1,41 @@
1
+ const path = require('path')
2
+ const fs = require('fs-extra')
3
+ const util = require('./util')
4
+
5
+ const CWD = process.cwd()
6
+ const resolve = (...file) => path.resolve(process.cwd(), ...file)
7
+
8
+ let pkg = {}
9
+
10
+ async function pkgImport () {
11
+ try {
12
+ pkg = await fs.readJson(path.resolve(CWD, 'package.json'))
13
+ } catch (err) {
14
+ util.logRed(err.toString())
15
+ }
16
+ if (!pkg.scripts || !pkg.scripts['dist']) {
17
+ util.logRed('请检查package.json文件是否提供了`dist`脚本')
18
+ process.exit()
19
+ }
20
+ }
21
+
22
+ async function executeCmd ({namespace,name,version,publicpath}) {
23
+ const BUILD_CMD = `npm run build --AUTO_NAMESPACE=${namespace} --AUTO_NAME=${name} --AUTO_VERSION=${version} --AUTO_PUBLICPATH=${publicpath}`
24
+ await util.asyncExec(BUILD_CMD)
25
+ }
26
+
27
+ async function start ({pack = false, build = true, push = true, token, namespace, name, version, publicpath} = {}) {
28
+ await pkgImport()
29
+ if (build) {
30
+ util.logGreen('构建中...')
31
+ await executeCmd({
32
+ namespace,
33
+ name,
34
+ version,
35
+ publicpath
36
+ })
37
+ util.logGreen('构建完成')
38
+ }
39
+ }
40
+
41
+ module.exports = start
@@ -0,0 +1,82 @@
1
+ const path = require('path')
2
+ const fs = require('fs-extra')
3
+ const util = require('./util')
4
+ const commander = require('commander')
5
+ const os = require('os')
6
+
7
+ let CONFIG_FILE = path.resolve(os.homedir(), './automan-config.json')
8
+ let OPTIONS = ['env', 'token', 'registry', 'shop-token']
9
+
10
+ async function readConfig () {
11
+ let config
12
+ if (!config) {
13
+ try {
14
+ config = await fs.readJson(CONFIG_FILE)
15
+ } catch (e) {
16
+ config = {token: '', registry: ''}
17
+ await fs.writeJson(CONFIG_FILE, config)
18
+ }
19
+ }
20
+ return config
21
+ }
22
+
23
+ async function getConfig (key) {
24
+ let config = await readConfig()
25
+ if (key) return config[key]
26
+ return config
27
+ }
28
+
29
+ async function setConfig (key, val) {
30
+ if (!OPTIONS.includes(key)) {
31
+ util.logRed(`无效配置项 ${key}`)
32
+ process.exit()
33
+ }
34
+ let config = await readConfig()
35
+ if (key && val) {
36
+ config[key] = val
37
+ await fs.writeJson(CONFIG_FILE, config, 'utf-8')
38
+ }
39
+ return config
40
+ }
41
+
42
+ async function removeConfig (key) {
43
+ let config = await readConfig()
44
+ delete config[key]
45
+ await fs.writeJson(CONFIG_FILE, config, 'utf-8')
46
+ }
47
+
48
+ async function start () {
49
+ commander
50
+ .arguments('<key> [val]', '设置或者读取全局配置如`token`、`env`、`host`等')
51
+ .option('-r, --rm', '移除配置')
52
+ .parse(process.argv)
53
+
54
+ let configKey = commander.args[0]
55
+ let configVal = commander.args[1]
56
+ let rm = commander['rm']
57
+
58
+ let config
59
+ if(!configKey) {
60
+ config = await getConfig()
61
+ return util.log(config)
62
+ }
63
+ if (configKey) {
64
+ if (rm) {
65
+ await removeConfig(configKey)
66
+ return
67
+ } else if (!configVal) {
68
+ config = await getConfig(configKey)
69
+ return util.log(config)
70
+ }
71
+ }
72
+ if (configKey && configVal) {
73
+ config = await setConfig(configKey, configVal)
74
+ util.log(config)
75
+ }
76
+ }
77
+
78
+ module.exports = {
79
+ start,
80
+ getConfig,
81
+ setConfig
82
+ }
@@ -0,0 +1,137 @@
1
+ const process = require('process')
2
+ const commander = require('commander')
3
+ const path = require('path')
4
+ const ejs = require('ejs')
5
+ const fs = require('fs-extra')
6
+ const package = require('../package.json')
7
+ const util = require('./util.js')
8
+ const configUtil = require('./automan-config.js')
9
+ const glob = require('glob')
10
+
11
+ commander
12
+ .arguments('<name>', '项目文件目录')
13
+ .parse(process.argv)
14
+
15
+ let name = commander.args[0] || 'test'
16
+ if (!name) {
17
+ util.logRed('请输入创建项目的文件目录')
18
+ process.exit(1)
19
+ }
20
+
21
+ async function projectDirCheck (projectDir) {
22
+ let status = await util.dirCheck(projectDir)
23
+ switch (status) {
24
+ case 'na': break
25
+ case 'keep': process.exit()
26
+ case 'clear': util.logGreen(`移除 ${projectDir} 成功.`)
27
+ }
28
+ }
29
+
30
+ async function generateProject (projectDir, tpl) {
31
+ let goon = await util.confirm(`准备创建项目,是否继续?`)
32
+
33
+ if (!goon) process.exit()
34
+ await fs.copy(tpl, projectDir, {
35
+ filter: function (src) {
36
+ return !/tpl(\\|\/)node_modules/.test(src)
37
+ }
38
+ })
39
+ // util.logGreen('模板获取完毕')
40
+ }
41
+
42
+ async function renderEjs (files, context) {
43
+ for(let tpl of files) {
44
+ await render(tpl)
45
+ }
46
+ util.logGreen('项目初始化完成')
47
+ async function render(tpl) {
48
+ let content = await ejs.renderFile(tpl, context, {async: true})
49
+ await fs.writeFile(tpl.replace('.ejs', ''), content, 'utf8')
50
+ await fs.remove(tpl)
51
+ }
52
+ }
53
+
54
+ async function pleaseAnswerMe (questions) {
55
+ var answers = {}
56
+ for (let key of Object.keys(questions)) {
57
+ let question = questions[key]
58
+ let answer
59
+ while (!(question.pattern || /^.+$/).test(answer = await getAnswer(question))) {
60
+ util.logRed(question.message || `不要包含特殊字符哦${String(question.pattern)}`)
61
+ }
62
+ answers[key] = answer
63
+ }
64
+
65
+ async function getAnswer (question) {
66
+ let answer
67
+ switch (question.type) {
68
+ case 'confirm':
69
+ answer = await util.confirm(question.desc, question.default)
70
+ break
71
+ case 'select':
72
+ answer = await util.select(question.desc, question.options, question.default)
73
+ break
74
+ case 'checks':
75
+ answer = await util.checks(question.desc, question.options)
76
+ break
77
+ default:
78
+ answer = (await util.quiz(question.desc, question.default)).trim()
79
+ }
80
+ return answer
81
+ }
82
+ return answers
83
+ }
84
+
85
+ async function start() {
86
+ const CWD = process.cwd()
87
+ const PROJECT_DIR = path.resolve(CWD, name)
88
+ const TPL_DIR = path.resolve(__dirname, '../', 'tpl')
89
+ let tags = []
90
+
91
+ await Promise.all([new Promise(async resolve => {
92
+ await projectDirCheck(PROJECT_DIR)
93
+ await generateProject(PROJECT_DIR, TPL_DIR)
94
+ resolve()
95
+ })])
96
+
97
+ let questions = {
98
+ 'name': {
99
+ desc: '请输入组件名(英文)',
100
+ default: name,
101
+ pattern: /^[A-Za-z_][\w-]+$/
102
+ },
103
+ 'label': {
104
+ desc: '请输入组件名(中文, 2-8个字)',
105
+ pattern: /^[^\s\r\n\t]{2,8}$/
106
+ },
107
+ 'type': {
108
+ desc: '请选择组件类型',
109
+ type: 'select',
110
+ options: [
111
+ {name: 'web', value: '0'},
112
+ {name: 'flutter', value: 1},
113
+ ],
114
+ default: 0
115
+ }
116
+ }
117
+
118
+ let answer = await pleaseAnswerMe(questions)
119
+ answer.description = answer.label // 不再分别设置 description 和 label
120
+ const PROJECT_EJS = glob.sync('**/*.ejs', {cwd: PROJECT_DIR, absolute: true, dot: true})
121
+ await renderEjs(PROJECT_EJS, answer)
122
+
123
+ util.logGreen('\n开发')
124
+ util.log(`cd ${name}`)
125
+ util.log('npm install')
126
+ util.log('npm run dev')
127
+
128
+ util.logGreen('\n打包')
129
+ util.log('automan build')
130
+
131
+ util.logGreen('\n发布')
132
+ util.log('automan publish')
133
+ util.log('')
134
+ util.log('')
135
+ }
136
+
137
+ module.exports = start