Mô-đun typescript-plugin-css không hoạt động

Tôi đã quản lý việc nhập CSS mô-đun trong lớp React TypeScript của mình bằng cách sử dụng plugin này từ NPM

Nội dung chính Hiển thị

  • @Modular-CSS/Tổng hợp
  • Cài đặt
  • Rollup version support
  • Phiên bản hỗ trợ phiên bản ⚠
  • Config file
  • In your code
  • Tùy chọn
  • - src - thành phần - Văn bản. tsx - Văn bản. mô-đun. css7
  • - src - thành phần - Văn bản. tsx - Văn bản. mô-đun. css8
  • khai báo mô-đun '*. mô-đun. css' { lớp const. { [Chìa khóa. sợi dây]. sợi dây }; . mô-đun. css' { lớp const. { [Chìa khóa. sợi dây]. sợi dây };
  • nhập css từ '. /Chữ. mô-đun. css';
  • "kịch bản". { "xây dựng". "rollup -c && tsc", "kiểm tra". "giỡn" } 1
  • "kịch bản". { "xây dựng". "rollup -c && tsc", "kiểm tra". "giỡn" } 4
  • nhập babel từ 'rollup-plugin-babel'; . /bưu kiện. json'; . đúng, đầu vào. '. /src/chỉ mục. ts', đầu ra. [ { tập tin. pkg. chính, định dạng. 'cjs' } ], bên ngoài. [. Sự vật. phím (pkg. phụ thuộc. {}) ], bổ sung. [ babel({ loại trừ. 'node_modules/**' }), bản đánh máy ({ bản đánh máy. yêu cầu ('typescript') }), postcss ({ plugin. [autoprefixer()], sourceMap. đúng, trích xuất. đúng, giảm thiểu. true }), terser() // thu nhỏ các gói được tạo ] } ];
  • > npm i @module-css/rollup0
  • > npm tôi @ mô-đun-css/rollup3
  • > npm i @modular-css/rollup5
  • Chia sẻ tùy chọn

tsconfig. json

{
  "compilerOptions": {
    "target": "ESNext",
    "outDir": "build",
    "jsx": "react",
    "noImplicitAny": false,
    "removeComments": true,
    "sourceMap": false,
    "module": "ESNext",
    "allowJs": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "baseUrl": "src",
    "plugins": [{ "name": "typescript-plugin-css-modules" }]
  },
  "exclude": [
    "node_modules/"
  ],
  "include": [
    "src/*"
  ]
}

Tôi cũng đã bổ sung tệp mô-đun sau trong thư mục SRC/ của mình

mô-đun. d. ts

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}

Nó đã ngăn chặn tất cả các cảnh báo và tôi có thể kiểm tra mã của mình tốt. Tôi có một thành phần đầu vào mô-đun CSS nằm trong cùng một thư mục

- src
  - components
    - Text.tsx
    - Text.module.css

Và vì vậy, thành phần của tôi chứa dòng nhập sau

import css from './Text.module.css';

Bây giờ tôi muốn chuyển mã của mình sang CommonJS để sử dụng nó như một mô-đun React trong các mã khác. Đây là cấu hình cuộn của tôi

bưu kiện. json

"scripts": {
  "build": "rollup -c && tsc",
  "test": "jest"
}

cuộn lên. cấu hình. js

import babel from 'rollup-plugin-babel';
import typescript from 'rollup-plugin-typescript2';
import pkg from './package.json';
import {terser} from 'rollup-plugin-terser';
import autoprefixer from 'autoprefixer';
import postcss from 'rollup-plugin-postcss';

export default [
    // CommonJS
    {
        inlineDynamicImports: true,
        input: './src/index.ts',
        output: [
            {
                file: pkg.main,
                format: 'cjs'
            }
        ],
        external: [
            ...Object.keys(pkg.dependencies || {})
        ],
        plugins: [
            babel({
                exclude: 'node_modules/**'
            }),
            typescript({
                typescript: require('typescript')
            }),
            postcss({
                plugins: [autoprefixer()],
                sourceMap: true,
                extract: true,
                minimize: true
            }),
            terser() // minifies generated bundles
        ]
    }
];

I could run

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
3 mà không có bất kỳ lỗi nào, tuy nhiên khi tôi nhìn vào mã được xây dựng, tệp mô-đun CSS không còn ở bên cạnh tệp Văn bản. js. Dưới đây là ảnh chụp màn hình của các thư mục được tạo bởi bản dựng

Mô-đun typescript-plugin-css không hoạt động

Tất cả các CSS đã được chuyển sang thư mục LIB và trong tệp văn bản được tạo. js

Có phải là một cách để bảo đảm sự tồn tại của cấu trúc tệp cấu trúc hoặc tệp chuyển đổi theo cách nhập chỉ vào tệp CSS chính xác?

Tôi đã tìm thấy một số cách giải quyết với webpack. cấu hình. js ( run file command

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
4), tuy nhiên tôi không hoàn toàn dễ dàng với nó (vì nó bổ sung nhiều tệp và phụ thuộc vào dự án và tôi không chắc chắn làm thế nào để xử lý mọi thứ tốt hơn )

Thank you very many

@Modular-CSS/Tổng hợp

Rollup support for

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
5
  • Cài đặt
  • Rollup version support
  • Cách sử dụng
    • API
    • Config file
    • In your code
  • Tùy chọn

Cài đặt

> npm i @modular-css/rollup

Rollup version support

Cách sử dụng

  • API
  • Config file
  • In your code
  • Tùy chọn

Phiên bản hỗ trợ phiên bản ⚠

API

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
0

Config file

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
1

In your code

Tùy chọn

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
2

Phiên bản hỗ trợ phiên bản ⚠

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
0

Do thay đổi API, một số phiên bản chính của plugin này sẽ yêu cầu công cụ cuộn phiên bản tối thiểu có thể. Điều này có thể thực hiện trong trường

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
6 trong
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
7 và được sao chép ở đây để dễ dàng tham khảo.
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
1

Tùy chọn

- src - thành phần - Văn bản. tsx - Văn bản. mô-đun. css7

Phiên bản hỗ trợ phiên bản ⚠

- src - thành phần - Văn bản. tsx - Văn bản. mô-đun. css8

Do thay đổi API, một số phiên bản chính của plugin này sẽ yêu cầu công cụ cuộn phiên bản tối thiểu có thể. Điều này có thể thực hiện trong trường

declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
6 trong
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
7 và được sao chép ở đây để dễ dàng tham khảo

khai báo mô-đun '*. mô-đun. css' { lớp const. { [Chìa khóa. sợi dây]. sợi dây }; . mô-đun. css' { lớp const. { [Chìa khóa. sợi dây]. sợi dây };

- src
  - components
    - Text.tsx
    - Text.module.css
0 yêu cầu
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
9

nhập css từ '. /Chữ. mô-đun. css';

- src
  - components
    - Text.tsx
    - Text.module.css
2 yêu cầu
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
}
9

"kịch bản". { "xây dựng". "rollup -c && tsc", "kiểm tra". "giỡn" } 1

Boolean để xác định xem có nên bao gồm các bản đồ nguồn nội tuyến hay không. Default is

import css from './Text.module.css';
7

Để buộc tạo nguồn bên ngoài bản đồ, hãy đặt giá trị thành

"scripts": {
  "build": "rollup -c && tsc",
  "test": "jest"
}
3

"kịch bản". { "xây dựng". "rollup -c && tsc", "kiểm tra". "giỡn" } 4

Boolean/chuỗi để xác định xem chunk siêu dữ liệu có nên được bắt đầu hay không. Nếu được đặt thành đúng thì sẽ ghi ra một tệp có tên

"scripts": {
  "build": "rollup -c && tsc",
  "test": "jest"
}
5. If a
import css from './Text.module.css';
9 will write ra tên tệp đó. Default is
"scripts": {
  "build": "rollup -c && tsc",
  "test": "jest"
}
0

Hiện tại siêu dữ liệu duy nhất được viết là CSS phụ thuộc, nhưng điều đó có thể thay đổi trong tương lai

"scripts": {
  "build": "rollup -c && tsc",
  "test": "jest"
}
8

Plugin Rollup sẽ ghi lại các định danh không hợp lệ bằng cách mặc định bằng cách mặc định. Bạn có thể vô hiệu hoá hành vi này bằng cách đặt

import babel from 'rollup-plugin-babel';
import typescript from 'rollup-plugin-typescript2';
import pkg from './package.json';
import {terser} from 'rollup-plugin-terser';
import autoprefixer from 'autoprefixer';
import postcss from 'rollup-plugin-postcss';

export default [
    // CommonJS
    {
        inlineDynamicImports: true,
        input: './src/index.ts',
        output: [
            {
                file: pkg.main,
                format: 'cjs'
            }
        ],
        external: [
            ...Object.keys(pkg.dependencies || {})
        ],
        plugins: [
            babel({
                exclude: 'node_modules/**'
            }),
            typescript({
                typescript: require('typescript')
            }),
            postcss({
                plugins: [autoprefixer()],
                sourceMap: true,
                extract: true,
                minimize: true
            }),
            terser() // minifies generated bundles
        ]
    }
];
0 thành
import babel from 'rollup-plugin-babel';
import typescript from 'rollup-plugin-typescript2';
import pkg from './package.json';
import {terser} from 'rollup-plugin-terser';
import autoprefixer from 'autoprefixer';
import postcss from 'rollup-plugin-postcss';

export default [
    // CommonJS
    {
        inlineDynamicImports: true,
        input: './src/index.ts',
        output: [
            {
                file: pkg.main,
                format: 'cjs'
            }
        ],
        external: [
            ...Object.keys(pkg.dependencies || {})
        ],
        plugins: [
            babel({
                exclude: 'node_modules/**'
            }),
            typescript({
                typescript: require('typescript')
            }),
            postcss({
                plugins: [autoprefixer()],
                sourceMap: true,
                extract: true,
                minimize: true
            }),
            terser() // minifies generated bundles
        ]
    }
];
1

nhập babel từ 'rollup-plugin-babel'; . /bưu kiện. json'; . đúng, đầu vào. '. /src/chỉ mục. ts', đầu ra. [ { tập tin. pkg. chính, định dạng. 'cjs' } ], bên ngoài. [. Sự vật. phím (pkg. phụ thuộc. {}) ], bổ sung. [ babel({ loại trừ. 'node_modules/**' }), bản đánh máy ({ bản đánh máy. yêu cầu ('typescript') }), postcss ({ plugin. [autoprefixer()], sourceMap. đúng, trích xuất. đúng, giảm thiểu. true }), terser() // thu nhỏ các gói được tạo ] } ];

Theo mặc định, plugin này sẽ trích xuất và đóng gói CSS trong một tệp riêng biệt. Nếu bạn muốn các kiểu từ mỗi tệp CSS được nhập được xuất dưới dạng chuỗi để sử dụng trong JS, bạn có thể kích hoạt điều này bằng cách đặt