You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

npm 9未复制本地依赖的.js文件,如何恢复原有行为?

问题解答

这是npm 9的新特性,不是Bug。npm 9调整了file:协议依赖的文件复制逻辑:此前npm会完整复制依赖目录的所有内容(除了被.gitignore排除的),但npm 9开始严格遵循package.json的files字段声明;若未配置files字段,则仅复制npm认定的「核心」文件(如package.json、README、LICENSE等),同时会参考.gitignore的排除规则——这就导致你的Shared项目构建出的.js文件没被复制到node_modules中。

要恢复原有工作方式,有两种可靠方案:

  • 方案一:配置Shared项目的files字段
    在Shared的package.json里明确列出需要被依赖项目引用的所有文件,假设你的Shared构建产物在dist目录,可这样配置:
    {
      "files": [
        "dist/**/*.js",
        "dist/**/*.d.ts",
        "dist/**/*.js.map"
      ]
    }
    
    这种方式最规范,能精准控制哪些文件会被复制到依赖项目的node_modules中。
  • 方案二:使用.npmignore反向排除文件
    若不想配置files字段,可在Shared项目根目录创建.npmignore文件,覆盖.gitignore的规则,确保.js文件不会被排除。示例如下:
    # 取消对dist目录的排除(如果.gitignore里排除了dist)
    !dist/
    # 保留dist下的所有目标文件
    !dist/**/*.js
    !dist/**/*.d.ts
    !dist/**/*.js.map
    

调整完成后重新执行npm install,node_modules里的Shared副本就会包含完整的构建文件了。

内容的提问来源于stack exchange,提问作者Rus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:10:35