laravel vue tailwind normalize
创始人
2024-03-09 09:44:27
0

下载laravel最新7.x

composer create-project --prefer-dist laravel/laravle blog 7.x-dev

 cd blog

valet link blog

valet links 

blog.test

测试通过后,开始安装tailwind

npm i

npm i tailwindcss autoprefixer postcss@7

都是最新版应该也没有什么问题

在根目录下添加

tailwind.js

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

在webpack.mix.js 改为

mix.js("resources/js/app.js", "public/js").sass("resources/sass/app.scss", "public/css").options({processCssUrls: false,postCss: [tailwindcss("./tailwind.js")],});

在res / sass /app.scss 中添加,vscode 的报错不用管,只要打包成就没什么问题,如果你是强迫症直接网上查找 或者  用phpstorm 

@tailwind base;
@tailwind components;
@tailwind utilities;

在welcome.blade.php中添加,测试代码dfdf

{ asset('css/app.css') }}">@stack('stylesheets')

在终端输入命令

npm run prod

这个时候刷新页面,是有出现文字背景是红色的,加载成功,

这个时候你会发现浏览器的css都是报红,不要慌,

在package.json 中添加

"browserslist": ["> 1%","last 2 versions"]

再运行 npm run prod

问题解决,接着在测试添加vue后会出现的问题

添加vue 

 composer require laravel/ui:^2.4

php artisan ui vue

npm install  初始化

打包要重新写

const mix = require("laravel-mix");const fs = require("fs");
const Path = require("path");
const { argv } = require("process");const tailwindcss = require("tailwindcss");/*|--------------------------------------------------------------------------| Mix Asset Management|--------------------------------------------------------------------------|| Mix provides a clean, fluent API for defining some Webpack build steps| for your Laravel application. By default, we are compiling the Sass| file for the application as well as bundling up all the JS files.|*/// 模块参数名称
const MODULE_ARG_NAME = "pages";const FILE_TYPE = {SASS: "sass",JS: "js",
};const SASS_PATH_PREFIX = "resources/sass/views";
const JS_PATH_PREFIX = "resources/js/views";const CSS_DEST_PATH = "public/css";
const JS_DEST_PATH = "public/js";function resolve(dir) {return Path.resolve(process.cwd(), dir);
}const getCompilerModules = () => {let modules = [];const lastArg = argv[argv.length - 1];if (lastArg.indexOf(MODULE_ARG_NAME) > -1) {const modulesStr = lastArg.split("=")[1];modules = modulesStr.split(",");}return modules;
};const complierFile = (fileType = FILE_TYPE.SASS,pathPerfix = SASS_PATH_PREFIX,destPath = CSS_DEST_PATH
) => {if (!mix[fileType] || !mix[fileType] instanceof Function) {throw new Error("文件类型非法!");}const _fn = mix[fileType];const _findNeedComfilerFile = (dirPath, subDirPath) => {const files = fs.readdirSync(dirPath);files.forEach((item) => {const fPath = Path.join(dirPath, item);const stat = fs.statSync(fPath);if (stat.isDirectory()) {_findNeedComfilerFile(fPath, item);}if (stat.isFile()) {let _targetDestPath = destPath;if (subDirPath) {_targetDestPath = `${_targetDestPath}/${subDirPath}`;}_fn(fPath, _targetDestPath);}});};try {_findNeedComfilerFile(pathPerfix);} catch (e) {// throw new Error(e);console.error(e);}
};const gloableCompier = () => {// 编译SASScomplierFile(FILE_TYPE.CSS, SASS_PATH_PREFIX, `${CSS_DEST_PATH}/views`);// 编译JScomplierFile(FILE_TYPE.JS, JS_PATH_PREFIX, `${JS_DEST_PATH}/views`);
};const init = () => {mix.webpackConfig({resolve: {alias: {"@": resolve("resources"),"@views": resolve("resources/views"),"@js": resolve("resources/js"),"@sass": resolve("resources/sass"),$public: resolve("public"),},},});// mix.js("resources/js/app.js", "public/js").sass(//     "resources/sass/app.scss",//     "public/css"// );mix.js("resources/js/app.js", "public/js").sass("resources/sass/app.scss", "public/css").options({processCssUrls: false,postCss: [tailwindcss("./tailwind.js")],});const compilerModules = getCompilerModules();console.log(compilerModules);if (compilerModules.length) {// 按需编译for (const module of compilerModules) {const sassPath = `${SASS_PATH_PREFIX}/${module}`;const jsPath = `${JS_PATH_PREFIX}/${module}`;// 编译SASScomplierFile(FILE_TYPE.CSS,sassPath,`${CSS_DEST_PATH}/views/${module}`);// 编译JScomplierFile(FILE_TYPE.JS,jsPath,`${JS_DEST_PATH}/views/${module}`);}} else {// 全局编译gloableCompier();}if (mix.inProduction()) {mix.version();}mix.sourceMaps(false, "eval-source-map");
};init();

完成后显示没有问题,但是

浏览器css 全部都报红,

解决方案:

1.直接将public /css / app.css 中修改 -webkit-text-size-adjust: none;  

2.在res / sass / app.scss 中修导入 

// @tailwind base;
// @tailwind components;
@tailwind utilities;// 如果你不需要它的初始,可以只有它的实例,那么,就没有  红色波浪线,

关于laravel 的模版语言,直接套用就好

layouts / app.blade.php


{ str_replace('_', '-', app()->getLocale()) }}">@yield('page-title'){ asset('css/app.css') }}">@stack('stylesheets')@yield('content')@stack('scripts')

接下来就直接继承就好 了

@extends('layouts.app')@section('page-title', 'home index')@section('content')
wo@{{test}}this is goodthi is btthis is xiaoming
@endsection@push('scripts') @endpush@push('stylesheets'){ asset('css/views/home/index.css') }}"> @endpush

 接下来就愉快的撸代码吧,如果出现其他问题可留言讨论

 这个时候看需要,导入一个组件库,我选择 antd

npm i ant-design-vue@1.7.8

复制 antd.min.js   antd.min.css 

这个时候就 normalize 和 reset  的效果都有了,用 e-ui  也是一样的,

相关内容

热门资讯

倍轻松(688793)披露涉及... 截至2025年12月24日收盘,倍轻松(688793)报收于26.43元,较前一交易日上涨1.23%...
景区5万月薪招185腹肌帅哥陪... 月薪5w+,急招185+帅哥腹肌陪滑官!近日,四川绵阳九皇山景区一则招聘文章,吸引了网友注意。网友表...
海南这五年:构建与自贸港建设相... 中新网海口12月24日电 (记者 符宇群)海南省司法厅厅长王磊24日在海口举行的海南司法行政“十四五...
七彩化学(300758)披露提... 截至2025年12月24日收盘,七彩化学(300758)报收于13.16元,较前一交易日下跌0.3%...
广田集团(002482)披露修... 截至2025年12月24日收盘,广田集团(002482)报收于1.73元,较前一交易日上涨1.17%...
靖国神社,被起诉 张昀/央视新闻 当地时间23日,二战期间被强征兵役的韩军遗属等举行记者会,介绍诉讼内容。 当地时间...
蓝科高新(601798)披露制... 截至2025年12月24日收盘,蓝科高新(601798)报收于9.0元,较前一交易日下跌0.33%,...
[视频]被日强征韩籍军人遗属起... 央视网消息(新闻联播):二战时期被日军强制征兵的部分韩籍军人的遗属23日向韩国首尔中央地方法院提起诉...
镇江经开民警巧妙化解停车纠纷,... 扬子晚报网12月24日讯(通讯员 毛润民 雷楚楚 记者 姜天圣)12月20日晚,镇江经开区丁卯派出所...
“国际”清风 | “宪法引领·... 在医院党委的高度重视和支持下,为深入学习宣传宪法、弘扬宪法精神,切实提升全院员工的法治素养,我院于第...