如何让Angular CLI构建时忽略自定义文件夹?生产构建报错求助
看起来你遇到的核心问题是:生产构建(ng build --prod)会把你移到app/custom_node的库文件当成应用代码来做严格编译检查,但这些库的代码往往不符合Angular生产构建的严苛规则(比如未转译的ES6+语法、类型定义缺失等)。我们不需要“忽略”这个文件夹,而是要告诉Angular CLI正确处理它——把它当成外部库资源,不参与应用的编译流程,同时确保构建时能完整复制到输出目录。
下面是具体的解决步骤:
步骤1:将自定义库文件夹配置为静态资源
打开angular.json,找到你项目的build配置(路径:projects -> [你的项目名] -> architect -> build -> options -> assets),添加以下配置,让Angular在构建时把这个文件夹的文件原样复制到dist目录,不进行编译:{ "glob": "**/*", "input": "src/app/custom_node", "output": "./app/custom_node" }步骤2:排除TypeScript编译检查
修改tsconfig.app.json(如果没有就改根目录的tsconfig.json),在exclude数组里加入你的自定义文件夹,这样TypeScript编译器在生产构建时就不会去检查这个文件夹里的代码,避免类型或语法报错:"exclude": [ "node_modules", "src/test.ts", "src/app/custom_node" ]步骤3:处理模块引用的类型问题(可选)
如果你的应用代码通过import引用这个库,TypeScript可能会提示“找不到模块”的错误。这时可以在src/typings.d.ts文件里添加模块声明(如果没有这个文件就新建一个):declare module '[你的库名]' { // 可以根据库的实际类型定义,或者简单用any跳过类型检查 const library: any; export default library; // 如果库有导出的具体内容,也可以在这里声明对应类型 }步骤4:处理CommonJS依赖警告(如果有)
如果生产构建时出现CommonJS依赖的警告,可以在angular.json的build -> options里添加allowedCommonJsDependencies,把你的库名加进去:"allowedCommonJsDependencies": [ "[你的库名]" ]
完成这些配置后,再运行ng build --prod应该就能正常构建了——自定义库文件夹会被原样复制到dist目录,不会被Angular的生产编译流程处理,也就不会出现之前的大量错误。
内容的提问来源于stack exchange,提问作者Bill

