npm发布TypeScript项目时,如何配置.npmignore忽略src下非TS文件?
解决npm包发布时仅保留src下TS文件并完整发布dist的问题
嘿,我之前也踩过这个npm发布配置的坑!你现在的问题是:想发布时只带dist文件夹和src里的TS/声明文件,但当前的.npmignore配置把整个src目录(包括HTML、CSS这些资源)都打包进去了对吧?这是因为你先写了src/忽略整个目录,后续的!src/**/*.ts规则根本不会生效——npm一旦标记整个目录为忽略,就不会再去检查里面的文件了。
方案一:修正.npmignore配置
换个思路,先匹配src下的所有内容,再反向保留需要的TS文件,而不是先把整个目录干掉。试试这个配置:
# 标准忽略项 node_modules/ karma.conf.js spec/ # 先匹配src下所有文件/文件夹 src/**/* # 再反向保留TS和声明文件 !src/**/*.ts !src/**/*.d.ts # 确保dist完整被包含(如果没在package.json里指定files,加上更稳妥) !dist/ !dist/**/*
方案二:用package.json的files字段(更推荐)
其实我更建议用package.json的files字段来主动指定要打包的内容,比.npmignore的排除法更清晰,不容易踩规则冲突的坑。你只需要在package.json里加这段:
{ "files": [ "dist/**/*", "src/**/*.ts", "src/**/*.d.ts" ] }
然后把.npmignore里和src相关的规则删掉,只保留那些标准忽略项就行。这样npm只会打包你明确列出来的内容,完全不用纠结忽略规则的优先级问题。
快速验证方法
别着急发布,先跑npm pack命令生成一个测试用的.tgz包,解压后看看里面的文件结构是不是符合预期——这样就能提前确认配置没问题,避免发布后踩坑。
另外记得检查一下你生成的source map文件,确保里面的源文件路径配置正确,这样调试时浏览器才能顺利找到src下的TS源码哦。
内容的提问来源于stack exchange,提问作者Roaders
相关产品推荐
相关产品推荐

