在 Docker 容器中使用 Laravel Mix 构建完整的 Tailwind 3 app.css 文件

Posted

技术标签:

【中文标题】在 Docker 容器中使用 Laravel Mix 构建完整的 Tailwind 3 app.css 文件【英文标题】:Build the complete Tailwind 3 app.css file using Laravel Mix in Docker container 【发布时间】:2022-01-16 11:41:26 【问题描述】:

我在 Docker 容器中设置了 Laravel,并使用 Laravel Sail 启动了它。我正在使用 Laravel mix 和 tailwind 版本 3 来包含我的 CSS。问题是我希望将整个 Tailwind CSS 编译到我的 resources/css/app.css 文件中。

tailwind.config.js

module.exports = 
  content: [
    "./resources/**/*.blade.php",
    "./resources/**/*.js",
    "./resources/**/*.vue",
  ],
  theme: 
    extend: ,
  ,
  plugins: [],

webpack.mix.js

const mix = require('laravel-mix');

mix.options(
    legacyNodePolyfills: false
);

mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css', [
        require("tailwindcss"),
    ]);

我通常从 docker 容器中的应用程序目录运行 ./vendor/bin/sail npm run watch 来编译 resources/css/app.css. 不过,编译过程需要一段时间,watch 命令似乎没有捕获任何更改并自动重新编译。我猜这是因为我的开发环境欠佳(英特尔酷睿 i3 和 4 GB 内存)。

似乎只有 tailwind.config.js 内的 content 键中的文件中包含的 Tailwind CSS 类被编译为 resources/css/app.css,因为每次我对刀片模板进行更改以查看更改时,我都必须重新运行 ./vendor/bin/sail npm run watch在我的浏览器上,这很麻烦。另外,我无法使用我的网络浏览器 (Google Chrome) 检查 CSS 并动态更改以查看浏览器上的效果。

我已经尝试删除tailwind.config.jscontent 键中的所有文件,即content: [],,但生成的resources/css/app.css 几乎是空的;导致我的刀片模板中的顺风 CSS 不起作用。

有没有办法修改tailwind.config.jswebpack.mix.js,这样我就可以简单地运行一次./vendor/bin/sail npm run dev,它会将整个Tailwind CSS 编译成resources/css/app.css?我不想在我的 html 标头中包含顺风 CSS 链接。

【问题讨论】:

【参考方案1】:

我通常从 docker 容器中的应用程序目录运行 ./vendor/bin/sail npm run watch 来编译资源/css/app.css。尽管如此,编译过程需要一段时间,并且 watch 命令似乎没有捕获任何更改并自动重新编译。我猜这是因为我的开发环境欠佳(英特尔酷睿 i3 和 4 GB 内存)。

不,这不是我的“次优”开发环境。

根据Laravel Mix documentation:

Webpack 可能无法在某些本地开发环境中检测到您的文件更改。

相同的文档建议您运行

npm run watch-poll

相反,它解决了每次更改刀片模板时都必须运行 npm run devnpm run watch 的问题。

但是,每次更改刀片模板时,我仍然需要刷新浏览器。 Laravel 文档建议您使用 Laravel Mix 的 browserSync() 方法,如 here 所示。但它不适用于我的情况,因为我在无头环境(即 Docker 容器)中工作。 browserSync() 方法允许您在更改刀片模板文件时观察浏览器中的更改,而无需刷新浏览器。

不过,生成完整的 Tailwind css 文件以便我可以检查浏览器上的元素并直接在浏览器上进行更改(例如通过 Chrome 中的开发人员选项卡)的主要问题尚未解决;现在,每次我想查看对模板文件所做的更改时,我只剩下刷新浏览器的痛苦。所以,我的问题部分解决了。

【讨论】:

以上是关于在 Docker 容器中使用 Laravel Mix 构建完整的 Tailwind 3 app.css 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Cloud 中使用 Laravel 8 的 Docker 容器的 503“服务不可用”

在 Docker 容器中使用 Laravel Mix 构建完整的 Tailwind 3 app.css 文件

经过测试,chrome 进程仍然在 Docker 容器中的 Laravel Dusk

Docker深入浅出2

为啥“起航”命令没有构建我的 laravel docker 容器?

连接拒绝 docker、laravel 和 mysql 服务器