Laravel Mix 编译资产后是不是还需要 node_modules 文件夹?

Posted

技术标签:

【中文标题】Laravel Mix 编译资产后是不是还需要 node_modules 文件夹?【英文标题】:Is node_modules folder still needed after Laravel Mix compiled the assets?Laravel Mix 编译资产后是否还需要 node_modules 文件夹? 【发布时间】:2019-05-25 15:15:00 【问题描述】:

node_modules 文件夹的大小相当大。我想知道我们是否可以在 Laravel Mix 编译完所有内容后将其删除?当然,我之前尝试过(安装jquery),然后在 Laravel Mix 编译完所有内容后删除 node_modules 文件夹。我的jquery 代码仍在运行,完全没有错误。那还好吗?

【问题讨论】:

【参考方案1】:

你永远不应该将你的 node_modules 文件夹提交给 git。那将需要永远。只需提交 package.jsonpackage-lock.json

但是,您不希望每次构建代码时都必须重新安装它们。我查了一个大项目,总大小是310 M。你有什么情况不能保持原状?

为了直接回答你的问题,Laravel 从不运行 node_modules 文件夹中的代码,从那里使用的所有代码都编译到 app.js 中,所以如果你删除它是安全的不得不。

【讨论】:

所以我在安装新包时只需要 node_modules (并运行npm run production 命令)? @Adrian 就像我说的,来自node_modules 的代码仅在npm run prod 期间使用 - 如果您删除它,任何包都不会出现问题。 是的。我编辑了我的评论。所以如果我需要一个新包或者编译一个新包,有什么办法可以避免再次安装node_modules(删除后)? @Adrian 没有。每次编译代码时都需要它,如果添加新包,则必须重新编译代码。删除node_modules 不是最佳做法。 所以从技术上讲,如果我让它留在我的开发机器中会更好,对吧?【参考方案2】:

是的,你可以在运行后删除它:

npm run production

运行此命令后,所有必要的代码都将保存在 app.js 中

当需要 node_modules 时,您可以再次下载它们:

npm install

【讨论】:

所以我在安装新软件包时只需要node_modules?它等于所有包吗?我认为仅仅因为它适用于 jquery 并不意味着它适用于其他人 当您使用 vuejs 或 react 作为前端时,每次更改代码时都应该编译并且需要 node_modules 但如果您只使用 jquery 或 bootstrap js 或 ... 并编写您的脚本标签中的代码或编译后单独的 js 文件中的代码,您可以删除 node_modules,因为 laravel-mix 会将所有必要的代码捆绑在 app.js 文件中

以上是关于Laravel Mix 编译资产后是不是还需要 node_modules 文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 用于AdonisJS的Laravel Mix + TailwindCSS + PurgeCSS资产管道配置

在 AWS Serverless 平台上部署 Laravel (laravel-mix) 应用程序

尝试使用 Laravel Mix 将 Tailwind CSS 添加到 Wordpress 项目时出现“未找到模块”

$(...).DataTable 在使用 Laravel Mix 时不是函数

Laravel mix / webpack 不会在通过 babel() 编译的脚本上触发监视功能

如何在自定义 URL 上运行 Laravel mix?