При разработке надстройки 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
Вот конфигурация папок моего проекта:
Не стесняйтесь, если вы хотите увидеть содержимое других файлов.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Основываясь на опубликованном вами руководстве, вам нужно сделать это внутри вашего dist/index.html.
<script src = "bundle.js"></script>
Style.css необходимо импортировать в файл index.js.
Просто указываю на то, что есть в учебнике, но не уверен, что этот учебник действителен.
В 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 - как указано в этом комментарии.
Более подробный учебник:
спасибо, все работает, просто нужно знать, в каких случаях мы указываем tailwind.config в папку dist, а иногда и в src?
Я обновил свой ответ более подробно.
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»,
Я уже делаю это :
<script defer = "defer" src = "taskpane.js"></script>но это не работает