- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我第一次尝试让 webpack 工作,我在一个简单的网站上做这件事,但无论我尝试什么,它都无法正常工作。我已经坚持了几个星期,我认真地尝试了那里的每一个线程都无济于事。我只需要对 webpack 没有问题的人查看我的代码并就如何使其正常工作提供评论。
我的所有源代码都在 src 目录中。库和开发人员依赖项位于 node_modules 目录中。我想运行 webpack 并将所有内容输出到 dist 目录。如果我只使用 src 目录中的文件运行服务器,它工作正常,但一旦我运行 webpack 并尝试使用 dist 目录中的文件,它就会崩溃。
这是 webpack.config.js:
var webpack = require('webpack');
var path = require('path');
module.exports = {
context: __dirname + "\\src",
debug: true,
entry: "./index.webpack.js",
output: {
path: __dirname + "\\dist",
filename: "index.min.js"
},
module: {
loaders: [
{
test:/\.js$/,
exclude:/(node_modules)/,
loader:'babel-loader',
query: {
presets:['es2015']
}
},
{
test:/\.css$/,
exclude:/(node_modules)/,
loader:'style-loader!css-loader'
},
{
test:/\.less$/,
exclude:/(node_modules)/,
loader:'style-loader!css-loader!less-loader'
},
{
test:/\.(png|woff|woff2|eot|ttf|svg)$/,
exclude:/(node_modules)/,
loader: 'url-loader?limit=100000'
},
{
test:/\.(jpe?g|png|gif|svg)$/i,
exclude:/(node_modules)/,
loader: 'url?limit=10000!img?progressive=true'
},
{
test:/\.html$/,
exclude:/(node_modules)/,
loader: 'html-loader'
}
]
},
plugins: [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
]
};
我的入口点是 index.webpack.js:
require('file?name=[name].[ext]!./index.html');
require('jQuery');
require('bootstrap');
require('file?name=[name].[ext]!./css/footer.css');
require('file?name=[name].[ext]!./css/header.css');
require('file?name=[name].[ext]!./css/styles.css');
require('file?name=[name].[ext]!./fonts/HelveticaRounded-Black.eot');
require('file?name=[name].[ext]!./fonts/HelveticaRounded-Black.svg');
require('file?name=[name].[ext]!./fonts/HelveticaRounded-Black.ttf');
require('file?name=[name].[ext]!./fonts/HelveticaRounded-Black.woff');
require('file?name=[name].[ext]!./img/butterfly.gif');
require('file?name=[name].[ext]!./img/dr photo.jpg');
require('file?name=[name].[ext]!./img/firefly.gif');
require('file?name=[name].[ext]!./img/footerspikes.gif');
require('file?name=[name].[ext]!./img/mainheaderimage.jpg');
require('file?name=[name].[ext]!./img/mushrooms.gif');
require('file?name=[name].[ext]!./img/teethkids.gif');
require('file?name=[name].[ext]!./img/titlebanner.gif');
require('file?name=[name].[ext]!./refs/footer.html');
require('file?name=[name].[ext]!./refs/header.html');
require('file?name=[name].[ext]!./refs/leftmargin.html');
require('file?name=[name].[ext]!./refs/rightmargin.html');
你怎么看?
--尝试第一个答案后编辑--
我更新的 webpack.config.js:
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
var commonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
var cleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
context: path.join(__dirname, 'src'),
debug: true,
entry: {
entry: path.join(__dirname, 'src', 'index.webpack.js'),
vendor: ['jquery', 'bootstrapjs']
},
resolve: {
alias: {
'jquery': path.join(__dirname, 'node_modules', 'jquery', 'dist', 'jquery.min.js'),
'bootstrapjs': path.join(__dirname, 'node_modules', 'bootstrap', 'dist', 'js', 'bootstrap.min.js')
}
},
output: {
path: path.join(__dirname, 'dist'),
filename: "[name].[chunkhash].bundle.min.js"
},
module: {
loaders: [
{
test:/\.js$/,
exclude:/node_modules/,
include:path.join(__dirname, 'src'),
loader:'babel-loader',
},
{
test:/\.css$/,
include:path.join(__dirname, 'src'),
loader:'style-loader!css-loader'
},
{
test:/\.less$/,
include:path.join(__dirname, 'src'),
loader:'style-loader!css-loader!less-loader'
},
{
test:/\.(png|woff|woff2|eot|ttf|svg)$/,
include:path.join(__dirname, 'src'),
loader: 'url-loader?limit=100000'
},
{
test:/\.(jpe?g|png|gif|svg)$/i,
include:path.join(__dirname, 'src'),
loader: 'url-loader?limit=100000!img?progressive=true'
},
{
test:/\.html$/,
include:path.join(__dirname, 'src'),
loader: 'html-loader'
}
]
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
inline: true,
stats: 'errors-only'
},
plugins: debug ? [
new cleanWebpackPlugin(['dist']),
new htmlWebpackPlugin({
template: path.join(__dirname, 'src', 'pages', 'index.html'),
hash: true,
chunks: 'commons'
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
jquery: "jquery"
}),
new commonsChunkPlugin({
name: ['commons', 'vendor', 'bootstrap']
})
] : [
new cleanWebpackPlugin(['dist']),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
new htmlWebpackPlugin({
template: path.join(__dirname, 'src', 'pages', 'index.html'),
hash: true,
chunks: 'commons'
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
jquery: "jquery"
}),
new commonsChunkPlugin({
name: ['commons', 'vendor', 'bootstrap']
})
]
};
我的 index.webpack.js 现在是一个空文件。
我基本上仍然遇到与以前完全相同的问题,只是我使用的是 html-webpack-plugin 而不是在入口文件中要求我的所有文件。
$ 未定义,即使我使用 provideplugin 对其进行定义。
bootstrap css 没有通过,当我将它放入 vendor 列表时它不起作用。
有什么想法吗?
最佳答案
既然你开始了,现在是切换到 Webpack 2 和 https://webpack.js.org/ 的好时机对于目前处于测试阶段的文档,您可以通过以下方式使用 beta
分发标签安装它:
npm install webpack@beta --save
太好了,现在深吸一口气,让我们尝试完成下一点:您必须忘记提供原始应用程序源和 Assets ,并始终将您的 Web 服务器指向输出目录(或简单地使用 webpack -开发服务器
)。让我试着解释一下。
Webpack 是一个模块打包器,它积极地优化分发,几乎所有的功能都依赖于模块加载器。模块加载器所做的是将您的静态引用获取到您的源或 Assets ,并生成一个 JS 模块。 Oprah 节目:CSS 源代码有一个 JS 模块,PNG 有一个 JS 模块,MP3 有一个 JS 模块——每个人都有一个模块\o/。如果您习惯于简单地编写源代码、放入 Assets 并将 Web 服务器指向根目录并从 HTML 静态引用这些内容,这可能会让您感到困惑,因为它不适用于 Webpack。
像这样使用 file-loader
不会让你到任何地方,因为你没有对输出做任何事情。请记住,我说过所有东西都有一个模块,file-loader
生成的是一个将字符串导出到输出中的某些 Assets 的模块。因此,您必须开始做的第一件事就是开始获取这些输出,然后将它们注入(inject) HTML 以获取实际引用。
您应该考虑使用 html-webpack-plugin
生成必要的 HTML 模板,并在您的 JS 源中根据需要需要其他 Assets 。
关于jquery - 将 Webpack 用于简单站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272886/
像这样的webpack.config.js文件可以导出多个配置: module.exports = [{entry: 'a.js'}, {entry: 'b.js'}]; 当我调用 webpack 时
我正在尝试在 webpack 配置文件中设置 browserslist,但不知道如何执行此操作。 在 webpack.config 中尝试了以下内容: 'use strict'; module.exp
If you are using webpack v5 or above you do not need to install this plugin. Webpack v5 comes with t
使用webpack 2时,为什么需要以相反的顺序为“use:”键添加加载程序?为什么不从头到尾,从左到右列出每个加载器?有什么理由吗? 最佳答案 看起来像是一种约定,它很容易成为匹配执行顺序和源顺序的
当我 web pack 的时候 --watch --config webpack.production.config.js --mode production 我有这个错误: ERROR in Typ
我有一个使用 Twig 进行模板的项目。其中的所有数据都是静态的,但为了清楚起见,我已经在其他 Twig 文件中分离出部分页面(否则一个文件中会有数百行标记)。 我使用 webpack 作为构建工具,
我使用 cli 创建了一个 vue.js 项目。我使用了 webpack 模板。我已经为此工作了几天,并且工作顺利。 现在我需要向项目添加一个 npm 包。这个包建议我对 webpack 配置进行一些
我正在使用运行“node_modules/.bin/webpack”,但我知道可以配置路径以便您只需键入“webpack ”。不过,我找不到方法。 :/ 最佳答案 如果你安装一个包 globally
我正在服务器渲染我的 react 应用程序,如下所示: export default ({ clientStats }: { clientStats: any }) => async (req: Re
我试过包含一个通配符,它破坏了构建;和多个 favicon字段条目,它只使用最后一个输入。我如何支持使用此插件包含多个网站图标文件? 最佳答案 您还需要包括 favicons-webpack-pl
我正在使用 webpack 编译我的 Reactjs 文件。在我的项目中,我需要对后端进行 API 调用。 现在我有 3 个环境,分别是本地环境、开发环境和生产环境。 所以我有一个constants.
我正在将所有文件构建到“dist”文件夹中。 Dist ->index.html ->bundle.js 我已将配置设置为在我需要的特定端口上运行。 { entry: './src/ind
我想使用由 Closure Compiler 使用 Webpack 生成的 SourceMap,但我不知道该怎么做。 这是我的 webpack 配置: const ClosureCompiler =
有没有办法接收当前文件路径,就像在 requirejs 中一样? define(['module'], function (module) { console.log(module.uri)
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
我是 webpack 的初学者用户。我想写一个webpack.config.js建立我的项目。但是有什么不对的地方! 这是我的 package.json (已安装所有依赖项): { "name":
我从这里开始:https://github.com/vuejs/vue-cli 我不确定它是否使用 Webpack。 包含/使用 webpack 的项目将包含哪些文件? 最佳答案 如果您的项目正在使用
Webpack,你将要了我的命。 html-webpack-plugin 在生产中运行良好。 'dist' 文件夹加载了我的 html 模板和插入的包。好酷。 但是,webpack-dev-serve
想象一下我有一个这样的项目: /moduleA/src... /moduleB/src... /mainApp/src... 每个模块和主应用程序都有一个单独的 webpack.config。模块是库
根据 webpack 文档,我尝试将 UglifyJSPlugin 添加到 webpack 4 项目中,但我仍然在我的包中看到死代码甚至注释,这让我认为我的 uglify 插件配置没有被使用。 Lin
我是一名优秀的程序员,十分优秀!