有一个项目说用了art-template,但是package.json里没有依赖,这是为什么?

这段在研究chancms这个系统,作者介绍用到了art-template,但我看依赖里没有安装这个依赖,他是怎么用的?
image.png

"dependencies": {
    "axios": "^1.7.8",
    "bcryptjs": "^2.4.3",
    "chanjs": "^1.0.36",
    "cheerio": "^1.0.0",
    "dayjs": "^1.11.13",
    "express-safe": "^1.0.9",
    "iconv-lite": "^0.6.3",
    "jsonwebtoken": "^9.0.2",
    "multer": "^1.4.5-lts.1",
    "node-schedule": "^2.1.1",
    "qiniu": "^7.14.0",
    "serve-favicon": "^2.5.0"
  },

模板里没有通过<script src="xxx.js"></script>这种方式加载,那他是怎么用的这个art-template?

阅读 1.2k
avatarAI BotBETA

回答

有几种可能的原因解释为什么 art-template 没有在 package.json 的依赖列表中列出但仍然被使用:

  1. 全局安装

    • art-template 可能被全局安装在开发者的机器上,通过命令行工具(如 npm install -g art-template)进行全局安装。这样,即使项目本身没有列出这个依赖,开发者仍然可以在项目中通过命令行或其他方式使用它。
  2. 子依赖

    • art-template 可能被列在某个已安装依赖的 dependenciesdevDependencies 中。虽然这种情况较少见(因为通常模板引擎会是直接依赖),但可以通过检查 node_modules 目录或使用 npm ls art-template 命令来确认。
  3. 手动复制

    • 在某些情况下,开发者可能手动将 art-template 的源代码或编译后的文件复制到项目中,从而避免通过 npm 安装。这种做法虽然不推荐,但在某些特定需求或限制下可能会采用。
  4. 构建工具集成

    • 项目可能使用某种构建工具(如 Webpack、Gulp 等)来集成 art-template。这些工具可以在构建过程中自动处理模板文件,而不需要在 package.json 中显式列出依赖。
  5. 自定义加载方式

    • 项目可能通过自定义的 Node.js 脚本或模块加载机制来动态加载 art-template。这种方式通常涉及到在运行时根据需要动态 requireimport 模块。

在你提到的情况下,由于 art-template 没有通过 <script src="xxx.js"></script> 的方式加载,并且没有在 package.json 中列出,最可能的原因是它被全局安装或以某种方式作为子依赖被间接引入,或者项目使用了特殊的加载机制。为了确定确切的原因,你可以尝试在项目的根目录下运行 npm ls art-template 来查看是否有这个依赖被间接安装,或者询问项目的维护者以获取更多信息。

1 个回答

看情况可能是依赖忘记去掉了, 可以直接在github issue 直接问一下作者就知道了,
补充,在chanjs依赖中
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进