typescript - 构建 typescript 前端库

标签 typescript sass rollupjs css-modules

我想做的是构建一个前端库(React 组件和 css/scss)。

我在找什么:

  • 构建单个 commonjs .js 文件和 .css 文件。
  • 不要在 .js 输出中包含库(例如:react 等)
  • 允许我使用 (s)css 模块

我的代码在结构上看起来像这样:

MyComponent.tsx

import { myComponentStyle } from './MyComponent.scss'

export class MyComponent extends React.Component {
  render() {
    return <div className={myComponentStyle} />
  }
}

MyComponent.scss

.myComponentStyle { /* styles */ }

MyComponent.scss.d.ts(由 typed-css-modules 生成以使 ts 编译器满意)

export const myComponentStyle: string;

我有一个单独的 index.ts 文件可以导出这些:

index.ts

export { MyComponent } from './MyComponent.tsx'
// other components

如果我没有样式,像这样的汇总配置完全按照我想要的方式构建:

import commonjs from 'rollup-plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'

const pkg = require('./package.json')

export default {
  input: 'src/index.ts',
  output: [{ file: pkg.main, format: 'cjs', sourcemap: true }],
  external: [],
  plugins: [
    typescript({ useTsconfigDeclarationDir: true }),
    commonjs(),
  ],
}

但我不知道如何处理 css。我尝试了 rollup-plugin-postcssrollup-plugin-postcss-modules 但它们都无法编译。

我的问题是:

  • 是否有关于如何使用汇总设置的方法(示例)?
  • 如果没有任何替代方法来生成所需的单个 .js.css 输出(webpack,任何构建系统)?

最佳答案

你可以:

关于 Rollup external 的更多信息 here

// rollup.config.js
import commonjs from 'rollup-plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'
import sass from 'rollup-plugin-sass'

const pkg = require('./package.json')

export default {
    input: 'src/index.ts',
    output: [{ file: pkg.main, format: 'cjs', sourcemap: true }],
    external: Object.keys(pkg.dependencies), // OR specify an array: ['react' /* , ...etc */]
    plugins: [
        sass({
            output: 'dist/bundle.css'
        }),
        typescript({ useTsconfigDeclarationDir: true }),
        commonjs(),
    ],
}

关于typescript - 构建 typescript 前端库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763123/

相关文章:

typescript - 如何确定两个对象是否属于同一类型( typescript )

javascript - 如何为 Angular Material Slide Toggle 设置默认值?

Mixin、函数和变量名称的 Sass 插值

angular - Angular2:Rollupjs捆绑与组件类中的相对路径

iife - 汇总 : globals & external

javascript - Vite磁盘缓存问题

angular - window.URL.createObjectURL [Angular 7/Typescript]

typescript - 在 VSCode 扩展中找不到命令

css - 你如何检查具有多个值 SASS 的无单位变量

css - SCSS 选择 "&"。进阶技巧