Respect Vite's `root` config field
I'm having trouble getting vite-plugin-php to work with my Vite setup (version 5.1.4). Despite following the plugin's documentation and configuring my vite.config.js as shown below, it doesn't seem to function as expected. My project structure is straightforward with a single index.php file in the src directory, and I've directed the plugin to use a specific PHP binary.
Here's my vite.config.js:
import path from "path";
import { defineConfig } from "vite";
import usePHP from "vite-plugin-php";
export default defineConfig({
plugins: [
usePHP({
binary: "/opt/homebrew/bin/php",
entry: ["index.php"],
}),
],
root: path.resolve(__dirname, "src"),
});
And my project structure:
- src
-- index.php
Could anyone point out what might be wrong with this configuration or suggest any steps to troubleshoot this issue?
Creating a starter repository for this would be highly beneficial! It seems like a fantastic development eliminating the need for workarounds and using wildcards. However, I wasn't able to make it function correctly.
Hi @ipekli,
Vite's root config is being ignored at the moment by the plugin.
The root is assumed to be the project folder, where the vite.config.js or vite.config.ts is.
In order to load the index.php from your src folder, the config should be as follows:
import path from "path";
import { defineConfig } from "vite";
import usePHP from "vite-plugin-php";
export default defineConfig({
plugins: [
usePHP({
binary: "/opt/homebrew/bin/php",
entry: ["src/index.php"],
}),
],
root: path.resolve(__dirname, "src"),
});
Keep in mind, that you will have /src/ prefix in the URL.
Regarding the root configuration: I will implement that properly, hopefully in the near future.
Why has this issue been closed? It does seem as this is still an issue.
I guess due to the created starter repository ;)
@donnikitos Hi, is there a way to change the project's root without altering the URLs of the assets? In my case, the entry file index.php is in the public folder, and the site is served from there, so in production, the asset URLs should be relative to this folder. That is, not /public/assets/style.css but /assets/style.css. I've tried everything for hours without success... I've already seen the starter repository, but it forces me to place index.php in the project root. My site is served from the public folder (and I want to keep the project's internal files out of it)...
An option would be to have the index.php in the root folder in development mode, and build it to dist/public/index.php folder, Keeping URLs relative to public...
Thanks.
Hi @jonacio,
not at the moment, sorry... Still need to implement the usage of Vite's root config field.
But I also believe that would not solve your issue...
Let's discuss your specific issue in a separate discussion thread: https://github.com/donnikitos/vite-plugin-php/discussions/56#discussion-8091324