创建webpack插件或加载器以注入CSS文件

时间:2017-08-10 07:39:18

标签: webpack extract-text-plugin webpack-plugin

我正在编写一个库,您可以使用它将React应用程序呈现为Web组件。像这样:

{ css: 'inject' }

您可以看到有一个选项<link>。要使用CSS创建Web组件,我需要将ReactWebComponent.create = function(options) { const proto = Object.create(HTMLElement.prototype, { attachedCallback: { value: function() { const mountPoint = document.createElement('span'); const shadowRoot = this.createShadowRoot(); shadowRoot.appendChild(mountPoint); shadowRoot.insertAdjacentHTML('beforeend', options.css); ReactDOM.render(<App />, mountPoint); } } }); document.registerElement('react-web-component', {prototype: proto}); }; 标记添加到阴影dom中。这发生在我的图书馆内。

虚拟代码:

'inject'

现在我当然不想追加字符串plugin。相反,我想编写一个Webpack loader<link>来获取extract-text-webpack-plugin生成的CSS文件,并在'inject'处注入相应的ReactWebComponent.create(<App />, 'my-react-web-component', { css: 'inject' }); 标记。所以来自

ReactWebComponent.create(<App />, 'my-react-web-component', { css: '<link rel="stylesheet" type="text/css" href="styles.a4e5f9.css">' });

我想生成这个

RegEx

我认为可以使用Dir.glob('./app/{exceptions,helpers}/*.rb').each do |file| require file end require './app/controllers/api_controller' require './app/uploaders/application_uploader' Dir.glob('./app/{uploaders,jobs,controllers,models,etls,docs}/*.rb').each do |file| require file end 轻松完成替换部分,但我对如何获取CSS文件名以及如何转换JS文件感到困扰。

0 个答案:

没有答案