3

我的目标是在分发包中提供一个 css 文件,如果需要,消费者可以使用它。

为此,我想创建一种全局 scss 文件,但我想避免这种样式附加到每个组件 + 它也不会被组件直接使用。因此,为此我想my-style.scss在文件夹中的某处创建文件/src

编译这个文件my-style.css并将其复制到dist文件夹的最佳方法是什么?

4

2 回答 2

5

It is possible to specify a global style with Stencil. Simply add the globalStyle property to your stencil.config.js and provide the entry scss file. Your config should look something like this:

const sass = require('@stencil/sass');

exports.config = {
  namespace: 'my-component-lib',
  outputTargets:[
    {
      type: 'dist'
    },
    {
      type: 'www',
      serviceWorker: false
    }
  ],
  globalStyle: 'src/globals/app.scss',
  plugins: [
    sass()
  ]
};

exports.devServer = {
  root: 'www',
  watchGlob: '**/**'
}

The build will successfully compile the scss to dist/my-component-lib.css.

于 2018-08-29T16:31:43.650 回答
0

来自文档:https ://stenciljs.com/docs/config/#copy

copyconfig 是一个对象数组,它定义了应该复制到构建目录的任何文件或文件夹。数组中的每个对象都必须包含一个src属性,该属性可以是绝对路径、相对路径或全局模式。配置还可以提供一个可选dest属性,该属性可以是绝对路径或相对于构建目录的路径。另请注意,为方便起见,其中的任何文件都会src/assets自动复制到www/assets

在下面的复制配置中,它将整个目录从 src/docs-contentover 复制到www/docs-content.

在 stencil.config.ts 中:

copy: [
  { src: 'docs-content' }
]

例如,我将我的 css 文件从 src 复制到构建目录,它是完全独立的,例如https://github.com/BlazeUI/blaze/blob/master/packages/atoms/stencil.config.ts#L14

于 2018-10-03T14:54:36.350 回答