61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { defineConfig } from 'vite';
|
|
import { resolve } from 'path';
|
|
|
|
/**
|
|
* Vite config for CyyWordpress theme.
|
|
*
|
|
* Outputs pre-hashed assets to assets/js/ and assets/css/.
|
|
* Run `npm run dev` → HMR dev server on :3000
|
|
* Run `npm run build` → production bundles with contenthash
|
|
*/
|
|
export default defineConfig( ( { command } ) => ( {
|
|
root: resolve( __dirname, 'src' ),
|
|
|
|
resolve: {
|
|
alias: {
|
|
'@scss': resolve( __dirname, 'scss' ),
|
|
'@': resolve( __dirname, 'src' ),
|
|
},
|
|
},
|
|
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
// Expose abstracts to every SCSS file without manual imports.
|
|
additionalData: `@use "@scss/abstracts/variables" as *;
|
|
@use "@scss/abstracts/mixins" as *;
|
|
`,
|
|
},
|
|
},
|
|
},
|
|
|
|
build: {
|
|
outDir: resolve( __dirname, 'assets' ),
|
|
emptyOutDir: false,
|
|
manifest: true,
|
|
rollupOptions: {
|
|
input: {
|
|
main: resolve( __dirname, 'src/ts/main.ts' ),
|
|
admin: resolve( __dirname, 'src/admin/customizer.ts' ),
|
|
},
|
|
output: {
|
|
entryFileNames: 'js/[name].[hash].js',
|
|
chunkFileNames: 'js/[name].[hash].js',
|
|
assetFileNames: ( assetInfo ) => {
|
|
if ( assetInfo.name?.endsWith( '.css' ) ) {
|
|
return 'css/[name].[hash][extname]';
|
|
}
|
|
return 'img/[name].[hash][extname]';
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
server: {
|
|
port: 3000,
|
|
// Proxy WordPress requests through the local server.
|
|
// Point WP_HOME to http://localhost:3000 in wp-config.php during dev.
|
|
cors: true,
|
|
},
|
|
} ) );
|