UNPKG

3.94 kBTypeScriptView Raw
1import minimist = require('minimist')
2import ChainableConfig = require('webpack-chain')
3import webpack = require('webpack')
4import WebpackDevServer = require('webpack-dev-server')
5import express = require('express') // @types/webpack-dev-server depends on @types/express
6import { ProjectOptions, ConfigFunction } from './ProjectOptions'
7
8type RegisterCommandFn = (args: minimist.ParsedArgs, rawArgv: string[]) => any
9
10type RegisterCommandOpts = Partial<{
11 description: string
12 usage: string
13 options: {
14 [flags: string]: string
15 }
16 details: string
17}>
18
19type WebpackChainFn = (chainableConfig: ChainableConfig) => void
20
21type webpackRawConfigFn = ((config: webpack.Configuration) => webpack.Configuration | void) | webpack.Configuration
22
23type DevServerConfigFn = (app: express.Application, server: WebpackDevServer) => void
24
25interface CacheConfig {
26 cacheDirectory: string
27 cacheIdentifier: string
28}
29declare class PluginAPI {
30 id: string
31
32 service: any
33
34 readonly version: string
35
36 assertVersion(range: number | string): void
37
38 /**
39 * Current working directory.
40 */
41 getCwd(): string
42
43 /**
44 * Resolve path for a project.
45 *
46 * @param _path - Relative path from project root
47 * @return The resolved absolute path.
48 */
49 resolve(_path: string): string
50
51 /**
52 * Check if the project has a given plugin.
53 *
54 * @param id - Plugin id, can omit the (@vue/|vue-|@scope/vue)-cli-plugin- prefix
55 * @return `boolean`
56 */
57 hasPlugin(id: string): boolean
58
59 /**
60 * Register a command that will become available as `vue-cli-service [name]`.
61 *
62 * @param name
63 * @param [opts]
64 * @param fn
65 */
66 registerCommand(name: string, fn: RegisterCommandFn): void
67 registerCommand(name: string, opts: RegisterCommandOpts, fn: RegisterCommandFn): void
68
69 /**
70 * Register a function that will receive a chainable webpack config
71 * the function is lazy and won't be called until `resolveWebpackConfig` is
72 * called
73 *
74 * @param fn
75 */
76 chainWebpack(fn: WebpackChainFn): void
77
78 /**
79 * Register
80 * - a webpack configuration object that will be merged into the config
81 * OR
82 * - a function that will receive the raw webpack config.
83 * the function can either mutate the config directly or return an object
84 * that will be merged into the config.
85 *
86 * @param fn
87 */
88 configureWebpack(fn: webpackRawConfigFn): void
89
90 /**
91 * Register a dev serve config function. It will receive the express `app`
92 * instance of the dev server.
93 *
94 * @param fn
95 */
96 configureDevServer(fn: DevServerConfigFn): void
97
98 /**
99 * Resolve the final raw webpack config, that will be passed to webpack.
100 *
101 * @param [chainableConfig]
102 * @return Raw webpack config.
103 */
104 resolveWebpackConfig(chainableConfig?: ChainableConfig): webpack.Configuration
105
106 /**
107 * Resolve an intermediate chainable webpack config instance, which can be
108 * further tweaked before generating the final raw webpack config.
109 * You can call this multiple times to generate different branches of the
110 * base webpack config.
111 * See https://github.com/mozilla-neutrino/webpack-chain
112 *
113 * @return ChainableWebpackConfig
114 */
115 resolveChainableWebpackConfig(): ChainableConfig
116
117 /**
118 * Generate a cache identifier from a number of variables
119 */
120 genCacheConfig(id: string, partialIdentifier: any, configFiles?: string | string[]): CacheConfig
121}
122
123/**
124 * Service plugin serves for modifying webpack config,
125 * creating new vue-cli service commands or changing existing commands
126 *
127 * @param api - A PluginAPI instance
128 * @param options - An object containing project local options specified in vue.config.js,
129 * or in the "vue" field in package.json.
130 */
131type ServicePlugin = (
132 api: PluginAPI,
133 options: ProjectOptions
134) => any
135
136export { ProjectOptions, ServicePlugin, PluginAPI }
137type UserConfig = ProjectOptions | ConfigFunction
138export function defineConfig(config: UserConfig): UserConfig
139
\No newline at end of file