typescript - 使用 rollup、postcss 和 tailwind 框架打包由 lit-element 制作的 Web 组件

标签 typescript rollupjs postcss tailwind-css lit-element

我正在尝试使用 postcss 插件将使用 lit-element/lit-html 编写的工作 Web 组件与 tailwind 框架一起打包rollup 打包程序。

rollup 之后,在我的 dist/ 目标文件夹中,我找到了正确编译的 js 和 html,但没有找到 postcss 之后的 css。我尝试了很多事情但没有成功......

dist/index.js 
dist/index.html
dit/webcomponents-loader.js

如果您想测试,也可以使用代码:https://gitlab.univ-rouen.fr/sreycoyrehourcq/web-components.git

我的postcss.config.js

module.exports = {
    plugins: [
        require("tailwindcss"),
        require("postcss-import"),
    ]
}

我也尝试不加载potcss.config。

我的rollup.config.js

import postcss from 'rollup-plugin-postcss'
import postcssImport from 'postcss-import';

import copy from 'rollup-plugin-copy';
import typescript from '@rollup/plugin-typescript';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import path from 'path'

const extensions = ['.js', '.jsx', '.ts', '.tsx', '.mjs'];
const outputDir = './dist/';

export default {
    input: './src/index.ts',
    output: {
        dir: outputDir,
        sourcemap: true,
        format: 'esm',
    },
    plugins: [
        resolve({ extensions }),
        commonjs(),
        typescript(),
        copy({
            targets: [
                { src: './src/index.html', dest: outputDir },
                { src: './node_modules/@webcomponents/webcomponentsjs/bundles/', dest: outputDir },
                {
                    src: './node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js',
                    dest: outputDir
                }
            ]
        }),
        postcss({
            plugins: [
                postcssImport()
            ],
            config: {
                path: "./postcss.config.js",
            },
            extract: path.resolve('dist/main.css'),
            module: false
        })
    ]
}

我也尝试使用这个 block :

postcss({
    config: false,
    plugins: [
        tailwind(),
        postcssImport()
    ],
    extract: true,
    module: false
}),

我的main.css:

@import "tailwindcss/base";

@import "tailwindcss/components";

@import "tailwindcss/utilities";

我的package.json:

    {
  "scripts": {
    "build": "rollup -c rollup.config.js",
    "start:build": "yarn run build && es-dev-server --root-dir dist --app-index index.html --compatibility none --open"
  },
  "devDependencies": {
    "@rollup/plugin-node-resolve": "^8.4.0",
    "@webcomponents/webcomponentsjs": "^2.4.4",
    "rollup-plugin-html": "^0.2.1",
    "rollup-plugin-postcss": "^3.1.3"
  },
  "dependencies": {
    "@rollup/plugin-typescript": "^5.0.2",
    "es-dev-server": "^1.57.1",
    "lit-element": "^2.3.1",
    "postcss-import": "^12.0.1",
    "postcss-nested": "^4.2.3",
    "postcss-preset-env": "^6.7.0",
    "rollup-plugin-commonjs": "^10.1.0",
    "rollup-plugin-copy": "^3.3.0",
    "rollup-plugin-node-resolve": "^5.2.0",
    "tailwindcss": "^1.6.0",
    "typescript": "^3.9.7"
  }
}

最佳答案

您应该在 ./src/index.ts 中导入 main.css 并运行 yarn build

...
import "./checkable-elements";
import "./hover-target";

// import main.css
import "./main.css";
...

构建结果如下,生成main.css

$ tree dist/ -L 1
dist/
├── bundles
├── index.html
├── index.js
├── index.js.map
├── main.css
└── webcomponents-loader.js

关于typescript - 使用 rollup、postcss 和 tailwind 框架打包由 lit-element 制作的 Web 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63198127/

相关文章:

typescript - 如何使用表单数据发布Axios

javascript - 将 typescript 与 RollUp bundle 在一起 - 无法处理编译器选项

npm - Gulp v4 监视任务

javascript - postcss 插件是否应该将 postcss 引用为对等依赖项?

Angular ionic 构建 : Cannot read property 'toLowerCase' of undefined postcss

javascript - 如何更快地在索引中加载内联源

reactjs - 需要帮助理解这种奇怪的 Jest 行为

javascript - 如何在 Angular 组件的输入元素上正确设置 ID?

mocha.js - 即使我使用 babel-register,也无法使用 mocha 从源文件夹导入代码