【问题标题】:Webpack inject js/css file content directly to index.htmlWebpack 将 js/css 文件内容直接注入 index.html
【发布时间】:2017-08-21 18:29:00
【问题描述】:

我有这样的代码

<html>
    <head>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
        <link href="path_to_css/some_css.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        ...
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <script src="jquery/jquery.min.js"></script>
    </body>
</html>

我需要插件/加载器或其他方式来获取我的 html 文件,并将链接和脚本标签替换为该文件的内容,有什么办法吗?

最后我写了自己的插件来满足我的需要 include-file-webpack-plugin

【问题讨论】:

  • 我会试试html-webpack-plugin
  • 这个插件不能做到这一点,或者我不能用这个插件做到这一点只有我想要的是将css文件的内容放入html
  • @jagwedanfesa 我想您需要再次阅读文档。

标签: javascript webpack webpack-2


【解决方案1】:

实际上可以通过以下方式完成:

  1. npm i --save-dev css-loader to-string-loader
  2. 配置你的 webpack
    module: [
        rules: [
          {
            test: /\.css$/,
            use: ['to-string-loader', 'css-loader']
          }
        ]
      }
    
  3. 然后在您的项目中,您可以像这样访问 css 作为字符串

    const cssContent= require('path_to_css/some_css.css'); console.log('your css is: ', cssContent.toString());

    • 或者您可能想手动将其注入页面:

      const boostrap= require('bootstrap/dist/css/bootstrap.min.css');
      let style= document.createElement('style');
      style.id= 'boostrap';
      style.setAttribute('type', 'text/css');
      style.innerHTML= boostrap.toString();
      document.body.appendChild(style);
      

参考

  1. Inject CSS stylesheet
  2. css-loader

【讨论】:

  • 你将如何从 Webpack / runtime 运行该函数?我正在将 ejs 模板编译成 1 个文件网页,因此无法从该页面运行 JS。
猜你喜欢
  • 2017-01-27
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2016-06-03
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
相关资源
最近更新 更多