【问题标题】:Bundle javascript & css for static website? (webpack?)为静态网站捆绑 javascript 和 css? (网络包?)
【发布时间】:2017-12-03 08:13:14
【问题描述】:

我正在尝试将我在静态 HTML 网站中使用的所有 javascript 文件捆绑在一起。到目前为止,它们都是未连接的,通过script 标签包含在不同的 HTML 文件中。

我现在创建了一个 main.js 文件,它只需要所有其他文件,这样我就可以将它用作我的 webpack 入口点。

这似乎适用于我自己编写的文件,但 bootstrap、tether 和 jquery 文件会抛出错误。

注意:我没有通过 npm 安装 jquery 或 bootstrap,我只是下载了 javascript 文件,将它们放在同一个文件夹中,并通过 require 将它们包含在 main.js 文件中。我的处理方式有什么问题吗?

// webpack.config.js
var path = require('path')

module.exports = {
  entry: ['./js/main'], // file extension after index is optional for .js files
  output: {
    path: path.join(__dirname, 'js'),
    filename: 'bundle.js'
  }
}

main.js:

require('./jquery-3.1.1.slim.min.js');
require('./tether.min.js');
require('./bootstrap.min.js');
require('./navigation.js');
require('./geschichte.js');
require('./iziToast.min.js');
require('./kontakt.js');

编辑:

我的错误是:

Uncaught Error: Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.
    at Object.<anonymous> (bundle.js:119)
    at __webpack_require__ (bundle.js:20)
    at Object.<anonymous> (bundle.js:79)
    at __webpack_require__ (bundle.js:20)
    at Object.<anonymous> (bundle.js:70)
    at __webpack_require__ (bundle.js:20)
    at bundle.js:63
    at bundle.js:66
  • 虽然包含,但应该包含。

【问题讨论】:

  • Webpack 是 ????。您应该有一个“主”javascript 文件,所以使用它作为入口点。
  • SASS/CSSwebpack 捆绑并使用它应该是直截了当的,因为您可以将它捆绑到一个单独的文件中并将其包含在您的html 页面中。使用JavaScript,如果&lt;script&gt; 标签中的所有内容都散布在html 页面上,那将变得很棘手。如果您可以将JavaScript 写成只需要包含在您的主页上,那么您可以使用webpack。最简单的方法是使用像ReactVueAureliaAngular这样的框架
  • 嗯。感谢您的回答。我不太明白为什么使用 javascript 会更困难?我刚才试过了,还是不行。刚刚编辑了我的问题。
  • 您的 bootstrap、tether 和 jquery 文件已缩小。您遇到了什么错误?
  • 错误就像我从未包含这些文件一样。缩小是个问题吗?

标签: javascript jquery html css webpack


【解决方案1】:

在你的 webpack.config.js 中:

// webpack.config.js
var path = require('path');
var webpack = require('webpack');

module.exports = {
    entry: ['./js/main'], // file extension after index is optional for .js files
    output: {
        path: path.join(__dirname, 'js'),
        filename: 'bundle.js'
    },
    plugins: [
        new webpack.ProvidePlugin({
           $: "jquery",
           jQuery: "jquery"
       })
    ],
    resolve: {
       alias: {
            jquery: "../jquery-3.1.1.slim.min.js"
        }
    }
}

在你的 main.js 中: require('jquery');

【讨论】:

  • 谢谢,我刚试过,但我收到了unexpected identifier error?
  • 抱歉,漏了一个逗号。已编辑。请重试。
  • 哦,抱歉,我没看到。
  • 我收到每个文件的以下错误:ERROR in ./js/bootstrap.js Module not found: Error: Can't resolve 'jquery' in '/Applications/XAMPP/xamppfiles/htdocs/hs/js' @ ./js/bootstrap.js 1:0-17 @ ./js/main.js @ multi ./js/main
  • 抱歉,我不熟悉您的目录结构。您需要使用该 jquery 文件的相对路径。也许尝试将别名字段中的路径更改为此? jquery: "./jquery-3.1.1.slim.min.js"
猜你喜欢
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 2023-03-07
  • 2011-06-17
相关资源
最近更新 更多