配置错误致Stencil.js项目被删,能否通过build产物重建?
Stencil.js 项目文件误删后,能否通过Build产物重建项目?
问题背景
我原本打算把Stencil.js项目部署到服务器,用"WWW"输出目标时遇到问题,查了官方文档后,因为不懂dir属性里的"web distribution directory"是什么意思,就在stencil.config.ts里加了dir: ".",最终配置如下:
import { Config } from '@stencil/core'; export const config: Config = { namespace: 'cosmo', outputTargets: [ { type: 'dist', esmLoaderPath: '../loader', }, { type: 'dist-custom-elements', }, { type: 'docs-readme', }, { type: 'www', dir: ".", serviceWorker: null, // disable service workers }, ], };
执行npm run build后,项目里包括.git在内的所有源文件都被删了,只剩assets里的图片和build产物。想问问能不能用现有的build产物重建项目(刚起步,也可以重写,但想知道可行性)。
可行性分析
- 基本无法直接重建完整项目:Stencil的build产物是编译、打包后的最终输出文件,只包含可运行的代码、资源,没有原始的
.tsx/.ts源文件,也缺失package.json、stencil.config.ts这类核心配置和依赖清单。 - 仅能作为开发参考:如果之前生成了
docs-readme,可以从生成的文档里还原组件的API结构、大致功能;另外build产物里的组件代码可以反编译,但得到的是转译后的JS代码,可读性差,且丢失了原始的类型注释、代码结构,没法直接作为可维护的项目代码使用。
后续处理建议
- 优先尝试数据恢复:立刻停止向当前磁盘写入新内容,用Recuva、TestDisk这类工具扫描磁盘,被删除的源文件大概率能找回,尤其是
.git目录如果能恢复,项目就能完整还原。 - 重写项目的话,利用现有的build产物:可以参考组件的最终渲染效果、样式结构、交互逻辑,减少重新开发的工作量。
- 避免再犯同样错误:Stencil的
www输出目标中,dir指定的是编译产物的输出目录,绝对不能设为.(项目根目录),build时会清空该目录下非产物文件,建议用默认的www或者自定义子目录(比如dist-www)。
内容的提问来源于stack exchange,提问作者Mr Usher
相关产品推荐
相关产品推荐

