diff --git a/packages/webpack-uni-mp-loader/lib/plugin/generate-component.js b/packages/webpack-uni-mp-loader/lib/plugin/generate-component.js index c77a570f86b36d998cc011cfa8548b1073badaf3..d74d7dfe1ba9c46e7ac6b1edf4975b9bb28ba49b 100644 --- a/packages/webpack-uni-mp-loader/lib/plugin/generate-component.js +++ b/packages/webpack-uni-mp-loader/lib/plugin/generate-component.js @@ -1,3 +1,4 @@ +const fs = require('fs') const path = require('path') const { removeExt, @@ -50,8 +51,10 @@ function findComponentModuleId (modules, concatenatedModules, resource, altResou resource } +let lastComponents = [] // TODO 解决方案不太理想 module.exports = function generateComponent (compilation) { + const curComponents = [] const components = getComponentSet() if (components.size) { const assets = compilation.assets @@ -62,6 +65,7 @@ module.exports = function generateComponent (compilation) { Object.keys(assets).forEach(name => { if (components.has(name.replace('.js', ''))) { + curComponents.push(name.replace('.js', '')) const chunkName = name.replace('.js', '-create-component') let moduleId = '' @@ -107,4 +111,20 @@ module.exports = function generateComponent (compilation) { } }) } + if (process.env.UNI_FEATURE_OBSOLETE !== false) { + if (lastComponents.length) { + for (const name of lastComponents) { + if (!curComponents.includes(name)) { + removeUnusedComponent(name) + } + } + } + lastComponents = curComponents + } +} + +function removeUnusedComponent (name) { + try { + fs.unlinkSync(path.join(process.env.UNI_OUTPUT_DIR, name + '.json')) + } catch (e) {} }