diff --git a/docs/config/index.md b/docs/config/index.md index 8fb0a57f45..f8e524c98e 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -96,6 +96,13 @@ Deprecated since Vue CLI 3.3, please use [`publicPath`](#publicPath) instead. ::: tip `assetsDir` is ignored when overwriting the filename or chunkFilename from the generated assets. ::: + + ### staticResourceDir + +- Type: `string` +- Default: `'public'` + + A static resource directory for `copy-webpack-plugin`. ### indexPath diff --git a/docs/ru/config/index.md b/docs/ru/config/index.md index f290869fee..b59ec0c311 100644 --- a/docs/ru/config/index.md +++ b/docs/ru/config/index.md @@ -86,6 +86,14 @@ module.exports = { `assetsDir` игнорируется при перезаписи опций имени файла (filename) или имени фрагментов (chunkFilename) сгенерированных ресурсов. ::: + +### staticResourceDir + +- Type: `string` +- Default: `'public'` + + A static resource directory for `copy-webpack-plugin`. + ### indexPath - Тип: `string` diff --git a/docs/zh/config/index.md b/docs/zh/config/index.md index 08529ad8d5..af4a39400b 100644 --- a/docs/zh/config/index.md +++ b/docs/zh/config/index.md @@ -98,6 +98,13 @@ module.exports = defineConfig({ 从生成的资源覆写 filename 或 chunkFilename 时,`assetsDir` 会被忽略。 ::: +### staticResourceDir + +- Type: `string` +- Default: `'public'` + + 为`copy-webpack-plugin`设置的静态资源目录. + ### indexPath - Type: `string` diff --git a/packages/@vue/cli-service/lib/config/app.js b/packages/@vue/cli-service/lib/config/app.js index c289d9ca94..8db08afa11 100644 --- a/packages/@vue/cli-service/lib/config/app.js +++ b/packages/@vue/cli-service/lib/config/app.js @@ -239,7 +239,7 @@ module.exports = (api, options) => { } // copy static assets in public/ - const publicDir = api.resolve('public') + const publicDir = api.resolve(options.staticResourceDir ?? 'public') const CopyWebpackPlugin = require('copy-webpack-plugin') const PlaceholderPlugin = class PlaceholderPlugin { apply () {} } diff --git a/packages/@vue/cli-service/lib/options.js b/packages/@vue/cli-service/lib/options.js index f410504e36..3d62c70f4f 100644 --- a/packages/@vue/cli-service/lib/options.js +++ b/packages/@vue/cli-service/lib/options.js @@ -4,6 +4,7 @@ const schema = createSchema(joi => joi.object({ publicPath: joi.string().allow(''), outputDir: joi.string(), assetsDir: joi.string().allow(''), + staticResourceDir: joi.string(), indexPath: joi.string(), filenameHashing: joi.boolean(), runtimeCompiler: joi.boolean(), @@ -94,6 +95,9 @@ exports.defaults = () => ({ // where to put static assets (js/css/img/font/...) assetsDir: '', + // static resource dir + staticResourceDir: 'public', + // filename for index.html (relative to outputDir) indexPath: 'index.html', diff --git a/packages/@vue/cli-service/types/ProjectOptions.d.ts b/packages/@vue/cli-service/types/ProjectOptions.d.ts index bbc0b6a623..f4fd9ccd65 100644 --- a/packages/@vue/cli-service/types/ProjectOptions.d.ts +++ b/packages/@vue/cli-service/types/ProjectOptions.d.ts @@ -71,6 +71,12 @@ interface ProjectOptions { * A directory (relative to `outputDir`) to nest generated static assets (js, css, img, fonts) under */ assetsDir?: string; + /** + * Default: `'public'` + * + * A static resource directory for `copy-webpack-plugin`. + */ + staticResourceDir?: string; /** * Default: `'index.html'` * diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 3ce9461d73..dbed2d19ef 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -614,6 +614,10 @@ "label": "Assets directory", "description": "A directory to nest generated static assets (js, css, img, fonts) under." }, + "staticResourceDir": { + "label": "Static Resource directory", + "description": "A static resource directory for 'copy-webpack-plugin'." + }, "runtimeCompiler": { "label": "Enable runtime compiler", "description": "This will allow you to use the template option in Vue components, but will incur around an extra 10kb payload for your app." diff --git a/packages/@vue/cli-ui/ui-defaults/config.js b/packages/@vue/cli-ui/ui-defaults/config.js index e91c774820..011a78cb25 100644 --- a/packages/@vue/cli-ui/ui-defaults/config.js +++ b/packages/@vue/cli-ui/ui-defaults/config.js @@ -43,6 +43,16 @@ module.exports = api => { group: 'org.vue.vue-webpack.config.vue-cli.groups.general', link: 'https://cli.vuejs.org/config/#assetsdir' }, + { + name: 'staticResourceDir', + type: 'input', + default: '', + value: data.vue && data.vue.staticResourceDir, + message: 'org.vue.vue-webpack.config.vue-cli.staticResourceDir.label', + description: 'org.vue.vue-webpack.config.vue-cli.staticResourceDir.description', + group: 'org.vue.vue-webpack.config.vue-cli.groups.general', + link: 'https://cli.vuejs.org/config/#staticResourceDir' + }, { name: 'runtimeCompiler', type: 'confirm',