如何使用 Webpack Encore 在 Heroku 上编译资产?

Posted

技术标签:

【中文标题】如何使用 Webpack Encore 在 Heroku 上编译资产?【英文标题】:How to compile assets on Heroku with Webpack Encore? 【发布时间】:2018-03-22 03:47:40 【问题描述】:

我在我的 Symfony heroku 应用程序中添加了一个 heroku/nodejs 构建包,并且我能够安装我的 yarn 依赖项。

但是我无法运行

$ yarn run encore production 

无论我在 composer.json 中运行命令,我总是遇到相同的错误Command "encore" not found

// composer.json
 "compile": [
     "node_modules/.bin/encore production",
     [•••]

或在 package.json 中

//package.json

  "scripts": 
    "heroku-postbuild" : "yarn run encore production"
    [•••]

【问题讨论】:

我终于修好了。我的错误是遵循 Webpack Encore 文档,该文档建议仅为开发依赖项安装 Webpack Encore。我猜它在heroku上下文中不相关(?)。我将所有纱线依赖项安装在 "dependencies" 而不是 package.json 中的 "devDependencies" 中,它可以工作! 【参考方案1】:

对于任何来到这里的人,您首先需要按照this question 将节点构建包添加到您的应用程序中。

确保在 php 之前添加节点 buildpack

然后,将"node_modules/.bin/encore production" 添加到您的编译中(如问题所示)。

最后,正如评论中所写,不要忘记将 package.json 中的 webpack 依赖项从 devDependencies 更改为 dependencies

【讨论】:

【参考方案2】:

在你的 package.json 根文件中:

"scripts": 
    ...
    "heroku-postbuild" : "node_modules/.bin/encore production"

它将运行您的 webpack encore 并运行您的其他 npm 模块。

【讨论】:

这对我帮助很大。 "heroku-postbuild" : "encore production" 顺便说一句就够了。【参考方案3】:

我总是以 cd my-project/ && ./node_modules/.bin/encore ... 运行 Encore 命令,这对你有用吗?

【讨论】:

以上是关于如何使用 Webpack Encore 在 Heroku 上编译资产?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 webpack encore 文件之外使用节点模块?

如何使用 Webpack Encore 在 Heroku 上编译资产?

Webpack 5 (Webpack Encore):如何在同一页面上运行多个 webpack 实例并避免任何冲突?

使用 TailwindCSS 和 Symfony Webpack Encore

Symfony Webpack Encore:从Bundle导入.js

Symfony 4 - Webpack-encore 使用 FosJsRouting :路由未定义