8000 feat: basic guijs plugin · sarvex/vue-cli@a9d1c94 · GitHub
[go: up one dir, main page]

Skip to content

Commit a9d1c94

Browse files
author
Guillaume Chau
committed
feat: basic guijs plugin
1 parent 18d1051 commit a9d1c94

File tree

10 files changed

+240
-0
lines changed

10 files changed

+240
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
module.exports = api => {
2+
api.describeConfig({
3+
id: 'org.vue.vue-cli',
4+
name: 'Vue CLI',
5+
description: 'org.vue.vue-webpack.config.vue-cli.description',
6+
link: 'https://cli.vuejs.org/config/',
7+
files: {
8+
vue: {
9+
js: ['vue.config.js']
10+
}
11+
},
12+
icon: '/_plugin/@vue%2Fcli-guijs-plugin/vue-cli.png',
13+
onRead: ({ data }) => ({
14+
prompts: [
15+
{
16+
name: 'publicPath',
17+
type: 'input',
18+
default: '/',
19+
value: data.vue && (data.vue.publicPath || data.vue.baseUrl), // fallback to baseUrl for compatibility
20+
message: 'org.vue.vue-webpack.config.vue-cli.publicPath.label',
21+
description: 'org.vue.vue-webpack.config.vue-cli.publicPath.description',
22+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
23+
link: 'https://cli.vuejs.org/config/#publicPath'
24+
},
25+
{
26+
name: 'outputDir',
27+
type: 'input',
28+
default: 'dist',
29+
value: data.vue && data.vue.outputDir,
30+
validate: input => !!input,
31+
message: 'org.vue.vue-webpack.config.vue-cli.outputDir.label',
32+
description: 'org.vue.vue-webpack.config.vue-cli.outputDir.description',
33+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
34+
link: 'https://cli.vuejs.org/config/#outputdir'
35+
},
36+
{
37+
name: 'assetsDir',
38+
type: 'input',
39+
default: '',
40+
value: data.vue && data.vue.assetsDir,
41+
message: 'org.vue.vue-webpack.config.vue-cli.assetsDir.label',
42+
description: 'org.vue.vue-webpack.config.vue-cli.assetsDir.description',
43+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
44+
link: 'https://cli.vuejs.org/config/#assetsdir'
45+
},
46+
{
47+
name: 'runtimeCompiler',
48+
type: 'confirm',
49+
default: false,
50+
value: data.vue && data.vue.runtimeCompiler,
51+
message: 'org.vue.vue-webpack.config.vue-cli.runtimeCompiler.label',
52+
description: 'org.vue.vue-webpack.config.vue-cli.runtimeCompiler.description',
53+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
54+
link: 'https://cli.vuejs.org/config/#runtimecompiler'
55+
},
56+
{
57+
name: 'productionSourceMap',
58+
type: 'confirm',
59+
default: true,
60+
value: data.vue && data.vue.productionSourceMap,
61+
message: 'org.vue.vue-webpack.config.vue-cli.productionSourceMap.label',
62+
description: 'org.vue.vue-webpack.config.vue-cli.productionSourceMap.description',
63+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
64+
link: 'https://cli.vuejs.org/config/#productionsourcemap'
65+
},
66+
{
67+
name: 'parallel',
68+
type: 'confirm',
69+
default: require('os').cpus().length > 1,
70+
value: data.vue && data.vue.parallel,
71+
message: 'org.vue.vue-webpack.config.vue-cli.parallel.label',
72+
description: 'org.vue.vue-webpack.config.vue-cli.parallel.description',
73+
group: 'org.vue.vue-webpack.config.vue-cli.groups.general',
74+
link: 'https://cli.vuejs.org/config/#parallel'
75+
},
76+
{
77+
name: 'css.modules',
78+
type: 'confirm',
79+
default: false,
80+
value: data.vue && data.vue.css && data.vue.css.modules,
81+
message: 'org.vue.vue-webpack.config.vue-cli.css.modules.label',
82+
description: 'org.vue.vue-webpack.config.vue-cli.css.modules.description',
83+
group: 'org.vue.vue-webpack.config.vue-cli.groups.css',
84+
link: 'https://cli.vuejs.org/config/#css-modules'
85+
},
86+
{
87+
name: 'css.extract',
88+
type: 'confirm',
89+
default: true,
90+
value: data.vue && data.vue.css && data.vue.css.extract,
91+
message: 'org.vue.vue-webpack.config.vue-cli.css.extract.label',
92+
description: 'org.vue.vue-webpack.config.vue-cli.css.extract.description',
93+
group: 'org.vue.vue-webpack.config.vue-cli.groups.css',
94+
link: 'https://cli.vuejs.org/config/#css-extract'
95+
},
96+
{
97+
name: 'css.sourceMap',
98+
type: 'confirm',
99+
default: false,
100+
value: data.vue && data.vue.css && data.vue.css.sourceMap,
101+
message: 'org.vue.vue-webpack.config.vue-cli.css.sourceMap.label',
102+
description: 'org.vue.vue-webpack.config.vue-cli.css.sourceMap.description',
103+
group: 'org.vue.vue-webpack.config.vue-cli.groups.css',
104+
link: 'https://cli.vuejs.org/config/#css-sourcemap'
105+
}
106+
]
107+
}),
108+
onWrite: async ({ api, prompts }) => {
109+
const vueData = {}
110+
for (const prompt of prompts) {
111+
vueData[prompt.id] = await api.getAnswer(prompt.id)
112+
}
113+
api.setData('vue', vueData)
114+
}
115+
})
116+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = api => {
2+
require('./project-type')(api)
3+
4+
if (api.getProject().type === 'vue') {
5+
require('./config')(api)
6+
require('./task')(api)
7+
require('./suggestion')(api)
8+
}
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = api => {
2+
api.addProjectType('vue', config => {
3+
// Detect Vue CLI project
4+
config.filterProject(({ pkg }) => ({ ...pkg.dependencies, ...pkg.devDependencies })['@vue/cli-service'])
5+
})
6+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const VUE_CONFIG_OPEN = 'org.vue.vue-config-open'
2+
3+
module.exports = api => {
4+
api.onViewOpen(({ view }) => {
5+
if (view.id !== 'vue-project-configurations') {
6+
api.removeSuggestion(VUE_CONFIG_OPEN)
7+
}
8+
})
9+
10+
api.onConfigRead(({ config }) => {
11+
if (config.id === 'org.vue.vue-cli') {
12+
if (config.foundFiles.vue) {
13+
api.addSuggestion({
14+
id: VUE_CONFIG_OPEN,
15+
type: 'action',
16+
label: 'org.vue.vue-webpack.suggestions.vue-config-open',
17+
handler () {
18+
const file = config.foundFiles.vue.path
19+
console.log('open', file)
20+
const { launch } = require('@vue/cli-shared-utils')
21+
launch(file)
22+
return {
23+
keep: true
24+
}
25+
}
26+
})
27+
return
28+
}
29+
}
30+
api.removeSuggestion(VUE_CONFIG_OPEN)
31+
})
32+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
module.exports = api => {
2+
// vue inspect
3+
api.addTask({
4+
name: 'inspect',
5+
command: 'vue-cli-service inspect',
6+
description: 'org.vue.vue-webpack.tasks.inspect.description',
7+
link: 'https://cli.vuejs.org/guide/webpack.html#inspecting-the-project-s-webpack-config',
8+
icon: '/public/webpack-inspect-logo.png',
9+
prompts: [
10+
{
11+
name: 'mode',
12+
type: 'list',
13+
default: 'production',
14+
choices: [
15+
{
16+
name: 'development',
17+
value: 'development'
18+
},
19+
{
20+
name: 'production',
21+
value: 'production'
22+
},
23+
{
24+
name: 'test',
25+
value: 'test'
26+
},
27+
{
28+
name: '(unset)',
29+
value: ''
30+
}
31+
],
32+
description: 'org.vue.vue-webpack.tasks.inspect.mode'
33+
},
34+
{
35+
name: 'verbose',
36+
type: 'confirm',
37+
default: false,
38+
description: 'org.vue.vue-webpack.tasks.inspect.verbose'
39+
}
40+
],
41+
onBeforeRun: ({ answers, args }) => {
42+
if (answers.mode) args.push('--mode', answers.mode)
43+
if (answers.verbose) args.push('--verbose')
44+
}
45+
})
46+
}
1.59 KB
Loading
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"name": "@vue/cli-guijs-plugin",
3+
"version": "4.0.0-alpha.3",
4+
"description": "UI integration",
5+
"repository": {
6+
"type": "git",
7+
"url": "git+https://github.com/vuejs/vue-cli.git",
8+
"directory": "packages/@vue/guisj-plugin-vue"
9+
},
10+
"keywords": [
11+
"vue",
12+
"cli"
13+
],
14+
"author": "Guillaume Chau",
15+
"license": "MIT",
16+
"bugs": {
17+
"url": "https://github.com/vuejs/vue-cli/issues"
18+
},
19+
"homepage": "https://cli.vuejs.org/",
20+
"publishConfig": {
21+
"access": "public"
22+
},
23+
"main": "lib/index.js",
24+
"dependencies": {
25+
"@vue/cli-global-utils": "^4.0.0-alpha.3",
26+
"@vue/cli-shared-utils": "^4.0.0-alpha.3"
27+
},
28+
"engines": {
29+
"node": ">=8.9"
30+
}
31+
}
Loading
Loading
Loading

0 commit comments

Comments
 (0)
0