- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让 Webpack 生成的捆绑 .css 文件更具可配置性,这样我就可以输出不同的“版本”——基于相同的 .css 文件——让开发人员在未来从事我的项目更轻松。
我想有以下步骤:
最后 - 在我的构建过程之后 - 我的 dist 文件夹中会有 4 个不同的文件。那我可能吗?
我目前的做法是,我为每个步骤运行不同的脚本 - 删除 dist 文件夹,遍历项目,生成输出。我希望有一个脚本可以同时完成所有这些工作,而不必经历我的项目 4 次。
我在这里找到了解决方案:
Webpack Extract-Text-Plugin Output Multiple CSS Files (Both Minified and Not Minified)
但是,对于我的具体情况,我必须在一个数组中返回 4 个不同的配置,而不是一个对象。
最佳答案
好的,根据我们的评论对话,我将为您提供步骤 1-4 的工作流程,但要进行常规 Assets 处理,而不是 Assets 捆绑(我没听说过,但也许其他人可以在那里详细说明).
所以步骤:
重要的事情:
此工作流程基本上是通过配置构建的。使用 package.json
文件配置 npm 脚本,使用 config.webpack.js
配置 webpack。这将允许您简单地运行 1 个命令来构建您的项目:npm run build
。 注意:为了简单起见,我将忽略生产/开发/等环境并专注于单一环境。
package.json
:
这用于设置当您在终端中输入 npm run build
时实际运行的命令(当然来自项目 dir
)。
由于我们暂时避免使用不同的环境,并且您不使用 Typescript,因此这是一个非常简单的配置:
"scripts": {
"build": "webpack",
},
这就是您需要添加的全部内容。现在听起来很愚蠢,但当项目变得更加复杂时,您会喜欢这些脚本,所以最好开始制作它们。
webpack.config.js
:主要提升将在此配置文件中进行。这基本上告诉 webpack 在运行时要做什么(这就是 npm run build
正在做的事情)。
首先让我们安装一些插件:
npm install --save-dev file-loader
npm install --save-dev html-webpack-plugin
npm install --save-dev mini-css-extract-plugin
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
devtool: 'source-map'
entry: './client/src/app.jsx',
output: {
path: path.join(__dirname, 'client/dist/public'),
filename: 'bundle.[hash].js'
},
module: {
rules: [
{
test: /\.s?css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
hmr: false
}
},
'css-loader',
'sass-loader'
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: ['file-loader']
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [
'file-loader'
]
}
]
},
resolve: {
extensions: ['.js', '.json', '.jsx']
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
template: './client/src/index_template.html'
}),
new MiniCssExtractPlugin({
filename: 'style.[hash].css',
chunkFilename: '[id].[hash].css'
}),
]
};
请注意,我添加了 htmlWebpackPlugin,因为它可以更轻松地自动引用正确的散列包。此外,我假设该应用程序是 React 应用程序,但您可以将入口点更改为您的应用程序加载的位置。
如果不进行测试,很难做到这一点,但我希望这能为您提供足够的引用,让您知道应该更改什么以及如何开始使用它。
我再次强烈推荐webpack.js
guides and documentation ,它们非常彻底,一旦您开始掌握它,事情就会开始顺利进行。
关于javascript - Webpack - 捆绑多个/不同版本的 .css 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167818/
我有一个要提交的 iOS 应用程序,我的应用程序在我的 iPhone 上运行。我将 apple id 帐户添加到 Xcode 并在 Xcode 的常规部分下输入我的 bundle id,然后单击“修复
我有一个SDK项目,它在gradle中引用了很多依赖项。我必须要求SDK用户在项目中使用SDK时添加这些依赖项。问题是,每当我添加一些新的依赖项或将当前的依赖项替换为新的依赖项时,我都必须要求用户进行
我使用 Microsoft.AspNet.Web.Optimization用于 css 和 js 捆绑和缩小的 nuget 包。 我在这个路径 ~/bundles/shared.css 中创建了一个包
我使用 laravel-mix(包括 webpack)来打包 JS 文件。使用 BundleAnalyzerPlugin,我发现我的输出文件包含多个 JQuery 库副本,这增加了输出文件的大小。 它
我正在使用 maven felix 插件来创建 OSGi 包,但是假设您有一个包“com.example”存在于project1和project2中。此外,project2 依赖于 project1。
当我尝试捆绑我的 Meteor 应用程序时,我得到: $ meteor bundle app.tgz Errors prevented bundling: Exception while bundli
因此查看 bundleconfig.cs 它应该允许基于设备类型进行捆绑。唯一的问题是因为它在 App_Start 中,所以不允许我访问 Request 对象。有什么想法可以实现基于设备的捆绑吗? 最
上下文 http://news.ycombinator.com/item?id=4125530 问题: 这是否最终意味着 Java 应用程序将能够发布到 Mac 商店? (因为 JRE 自动捆绑到应用
我正在尝试为一个 React/Redux 项目创建我自己的 Webpack 配置。配置看起来很好,但是包的大小很大(在开发模式下,我知道如何在生产模式下减少它) 我的 package.json 看起来
所以我一直收到这个 Bundle ID 错误,说它不可用而且我真的不知道如何修复它。这是错误: 提供的数据有误。请更正并重新提交。标识符为“com.team.AppName”的 App ID 不可用。
我正在浏览 SO 并找到了 some code这向我提出了一个问题。 struct node* BuildOneTwoThree() { struct node *list = malloc(3 *
我正在为 Delphi XE7 使用 intraweb XIV 捆绑版。当我在这个新的捆绑版本中测试一个 intraweb XII 应用程序时,SSL/TLS 不工作。捆绑版本不支持 SSL/TLS?
预期: 当我使用 webpack 构建时,我的所有 JS 文件都会被捆绑,除了 ./src/Portfolio 目录中的文件(根据我的 Webpack.config.js 设置)。 实际: Webpa
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我有一个项目引用了许多开源库,有些是新的,有些不是很新。也就是说,它们都很稳定,我希望坚持使用我选择的版本,直到我有时间迁移到更新的版本(我昨天测试了 hsqldb 2.0,它包含许多 api 更改)
我正在创建一个 REST API,并且我一直在研究允许捆绑来自客户端的请求的想法。我所说的捆绑是指他们可以发送一个包含多个“真实”请求的请求,然后将它们一起交付给客户。通常是 javascript a
在我的 AngularJS 项目中,我有一个 HTML 模板,其中 innerText 位于新行中: Click here 我正在使用 webpack 作为我的捆绑器。我希望它 trim
我已经为我的应用程序创建了一个静态库。现在,我的应用程序使用我在应用程序中引用的 plists 和图像等来源。 如何捆绑这些图像并将它们与静态库一起交付,以及我需要在源加载代码中进行哪些更改才能从该
所以, 我是 webpack 的新手,我正在开发一个项目,在该项目中我们只加载一个文件 bundle.js,我知道我可以单独加载文件。 但我想要的是bundle.js中未缩小的文件。目前我正在获取缩小
如何使用用户区域设置登录路径?我试过了 check_path: /{_locale}/login_check 和 check_path: /(en|ru)/login_check 但什么也没有
我是一名优秀的程序员,十分优秀!