未应用Webpack配置中的Tailwindcss

gmxoilav  于 2023-06-06  发布在  Webpack
关注(0)|答案(3)|浏览(188)

在开发outlook加载项时。
我会添加顺风,这是我跟踪的the tuto
package.json中,我得到了这些脚本

"scripts": {
    "build": "webpack --mode production",
    "build:dev": "webpack --mode development",
    "dev-server": "webpack serve --mode development",
     ...
  },

然后在webpack.config.js

const config = {
    devtool: "source-map",
    entry: {
      polyfill: ["core-js/stable", "regenerator-runtime/runtime"],
      vendor: ["react", "react-dom", "core-js", "@fluentui/react"],
      taskpane: ["react-hot-loader/patch", "./src/taskpane/index.tsx", "./src/taskpane/taskpane.html"],
      commands: "./src/commands/commands.ts",
    },
    output: {
      clean: true,
    },
    resolve: {
      extensions: [".ts", ".tsx", ".html", ".js"],
    },
    module: {
      rules: [
        {
          test: /\.css$/i,
          include: '/src',
          use: ['style-loader', 'css-loader', 'postcss-loader'],
        },
        {
          test: /\.ts$/,
          exclude: /node_modules/,
          use: {
            loader: "babel-loader",
            options: {
              presets: ["@babel/preset-typescript"],
            },
          },
        },
        {
          test: /\.tsx?$/,
          exclude: /node_modules/,
          use: ["react-hot-loader/webpack", "ts-loader"],
        },
        {
          test: /\.html$/,
          exclude: /node_modules/,
          use: "html-loader",
        },
        {
          test: /\.(png|jpg|jpeg|gif|ico)$/,
          type: "asset/resource",
          generator: {
            filename: "assets/[name][ext][query]",
          },
        },
      ],
    },
    plugins: [
      ...
      }),
      new HtmlWebpackPlugin({
        filename: "taskpane.html",
        template: "./src/taskpane/taskpane.html",
        chunks: ["taskpane", "vendor", "polyfills"],
      }),
      new HtmlWebpackPlugin({
        filename: "commands.html",
        template: "./src/commands/commands.html",
        chunks: ["commands"],
      }),
      new webpack.ProvidePlugin({
        Promise: ["es6-promise", "Promise"],
      }),
    ],
    devServer: {
      hot: true,
      headers: {
        "Access-Control-Allow-Origin": "*",
      },
      server: {
        type: "https",
        options: env.WEBPACK_BUILD || options.https !== undefined ? options.https : await getHttpsOptions(),
      },
      port: process.env.npm_package_config_dev_server_port || 3000,
    },
  };

postcss.config.js中:

const tailwindcss = require('tailwindcss');
module.exports = {
  plugins: [
    'postcss-preset-env',
    tailwindcss
  ],
};

最后是tailwind.config.js
/**@type {import('tailwindcss ').Config} */

module.exports = {
  content: ['./dist/*.html'],
    theme: {
    extend: {},
  },
  plugins: [],
};

当我尝试应用一个tailwind css类时,什么也没有发生,当我在devTools中检查tailwind css颜色标记是否被导入时,我也没有看到任何东西。
我在index.css中导入顺风组件

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

然后webpack在taskpane.html中为我生成这些导入

<link href="bd3fc3e614edb4896e6a.css" rel="stylesheet" />
<script defer="defer" src="vendor.js"></script>
<script defer="defer" src="taskpane.js"></script>

当我使用npm run dev-server运行我的应用程序时,我没有看到类被应用到html。
我认为顺风是不是导入他们在css文件

以下是我的项目文件夹配置:

如果您想查看其他文件内容,请不要犹豫。

inb24sb2

inb24sb21#

tailwind.config.js中,content应该指向来自src文件夹的路径。
这是因为,正如official docs中所述,Tailwind CSS的工作方式是扫描所有源文件(HTML文件,JavaScript组件和任何其他模板)的类名,生成相应的样式,然后将它们写入静态CSS文件。
Webpack在一个进程中构建样式和JS文件,然后将这些文件写入dist文件夹。指向tailwind.config.js中的dist文件夹将不起作用,因为在构建时,dist文件夹尚未更新。
假设你会在React文件(tstsx)中使用Tailwind类,但也会在html文件中使用Tailwind类,下面的配置应该可以工作:

/** @type {import('tailwindcss').Config} */

module.exports = {
  content: ["./src/**/*.{ts,tsx,html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

index.tsx应该是:

import React from "react";
import './index.css';

Webpack配置:

...
module: {
  rules: [
    ...
    {
      test: /\.css$/i,
      include: path.resolve(__dirname, 'src'),
      use: ['style-loader', 'css-loader', 'postcss-loader'],
    },
    ...
  ]
}
...

您所遵循的教程指向dist文件夹,因为它包含index.html文件-实际上是手动创建的文件,不是构建过程的一部分-它是手动更新的。
本教程仅适用于用index.html编写的Tailwind类。
由于您使用的是HtmlWebpackPlugin,因此通过template选项,源html文件将包含在构建过程中,然后写入dist文件夹中。
实际上,你可以检查-在该教程之后创建的设置中,并且如果没有使用在构建之前完全清理dist文件夹的插件-当第二次运行构建时,Tailwind会在上一次构建的文件中找到一些类,并相应地生成css-如此评论所述。
更全面的教程是:
https://dev.to/ivadyhabimana/setup-tailwind-css-in-a-react-project-configured-from-scratch-a-step-by-step-guide-2jc8

idfiyjo8

idfiyjo82#

根据您发布的教程,您需要在您的dist/index.html中执行此操作

<script src="bundle.js"></script>

style.css需要导入index.js文件中。
只是指出什么是对教程,不确定如果教程是有效的,虽然。

2hh7jdfx

2hh7jdfx3#

tailwind.config.js应该是

module.exports = {
  content: ["./src/**/*.{js,jsx,ts,tsx}"],
  theme: {
    extend: {},
  },
  plugins: [],
};

单位:app.js

import "./index.css";

其他一切似乎都是正确的
确保你安装了“postcss”,“postcss-loader”和“postcss-preset-env”

相关问题