Tailwindcss в конфигурации веб-пакета не применяется

При разработке надстройки Outlook.

Я бы добавил к этому попутный ветер, вот туто, которому я следую

В 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: [],
};

Когда я пытаюсь применить класс css попутного ветра, ничего не происходит, а также когда я проверяю в devTools, например, импортированы ли токены цветов 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

Вот конфигурация папок моего проекта:

Не стесняйтесь, если вы хотите увидеть содержимое других файлов.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
145
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Основываясь на опубликованном вами руководстве, вам нужно сделать это внутри вашего dist/index.html.

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

Style.css необходимо импортировать в файл index.js.

Просто указываю на то, что есть в учебнике, но не уверен, что этот учебник действителен.

Я уже делаю это : <script defer = "defer" src = "taskpane.js"></script> но это не работает

infodev 29.05.2023 10:33
Ответ принят как подходящий

В tailwind.config.jscontent должен указывать пути из папки src.

Это связано с тем, что, как указано в официальной документации, Tailwind CSS сканирует все исходные файлы (файлы HTML, компоненты JavaScript и любые другие шаблоны) на наличие имен классов, генерирует соответствующие стили и затем записывает их в статический файл CSS. .

Webpack создает в одном процессе как стили, так и файлы JS, а затем записывает эти файлы в папку dist. Указание на папку dist в tailwind.config.js не сработает, потому что во время сборки папка dist еще не обновлена.

Предполагая, что вы будете использовать классы Tailwind в файлах React (ts, tsx), а также в файлах html, следующая конфигурация должна работать:

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

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

И index.tsx должно быть:

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

Конфигурация вебпака:

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

Руководство, которому вы следовали, указывает на папку dist, потому что она содержит файл index.html, который на самом деле является файлом, созданным вручную и не являющимся частью процесса сборки — он обновляется вручную.

Учебник будет работать только для классов Tailwind, написанных на index.html.

Поскольку вы используете 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

спасибо, все работает, просто нужно знать, в каких случаях мы указываем tailwind.config в папку dist, а иногда и в src?

infodev 31.05.2023 10:42

Я обновил свой ответ более подробно.

andreivictor 31.05.2023 11:46

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»,

Другие вопросы по теме