diff --git a/packages/@vue/cli-service/lib/config/app.js b/packages/@vue/cli-service/lib/config/app.js index 1fe1834a30..7b08e42050 100644 --- a/packages/@vue/cli-service/lib/config/app.js +++ b/packages/@vue/cli-service/lib/config/app.js @@ -240,20 +240,27 @@ module.exports = (api, options) => { // copy static assets in public/ const publicDir = api.resolve('public') - if (!isLegacyBundle && fs.existsSync(publicDir)) { - webpackConfig - .plugin('copy') - .use(require('copy-webpack-plugin'), [{ - patterns: [{ - from: publicDir, - to: outputDir, - toType: 'dir', - noErrorOnMissing: true, - globOptions: { - ignore: publicCopyIgnore - } - }] - }]) + const CopyWebpackPlugin = require('copy-webpack-plugin') + const PlaceholderPlugin = class PlaceholderPlugin { apply () {} } + + const copyOptions = { + patterns: [{ + from: publicDir, + to: outputDir, + toType: 'dir', + noErrorOnMissing: true, + globOptions: { + ignore: publicCopyIgnore + } + }] + } + + if (fs.existsSync(publicDir)) { + if (isLegacyBundle) { + webpackConfig.plugin('copy').use(PlaceholderPlugin, [copyOptions]) + } else { + webpackConfig.plugin('copy').use(CopyWebpackPlugin, [copyOptions]) + } } }) }