按环境渲染 css
rendering css by environment
我想在 asp.net mvc 网站上切换到 webpack,这个网站有 3 个不同的环境,每个环境都有自己的配色方案(所以人们知道他们在什么环境中)所以我需要一种方法来告诉 webpack 加载哪个 css 文件以及何时加载,但不确定如何去做。
最后的结果是:
/asset/styles/style.dev.css
/asset/styles/style.debug.css
/asset/styles/style.prod.css
更新
例如,您默认启用了某个主题,并且您有一个主题切换器控件(布局页面),它使用 JavaScript.
在客户端引发事件
在您的入口脚本中,您可以附加到主题切换器控件的更改事件并执行:
虚拟代码:Index.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
webpack.config.js
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
如果您想要三个不同的构建,每个构建都有不同的主题,您可以执行以下操作:
如果您想要使用主题 A 运行 构建:npm run themeA
如果你想要使用 themeB 运行 构建:npm run themeB
package.json
"scripts": {
"themeA": "webpack --env.theme=themeA --mode development",
"themeB": "webpack --env.theme=themeB --mode development",
webpack.config.js
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
在你的入口点你可以做:
index.js
import "theme"
我想在 asp.net mvc 网站上切换到 webpack,这个网站有 3 个不同的环境,每个环境都有自己的配色方案(所以人们知道他们在什么环境中)所以我需要一种方法来告诉 webpack 加载哪个 css 文件以及何时加载,但不确定如何去做。
最后的结果是:
/asset/styles/style.dev.css
/asset/styles/style.debug.css
/asset/styles/style.prod.css
更新
例如,您默认启用了某个主题,并且您有一个主题切换器控件(布局页面),它使用 JavaScript.
在客户端引发事件在您的入口脚本中,您可以附加到主题切换器控件的更改事件并执行:
虚拟代码:Index.js
function changedEventHandler(){
var selectedTheme = $(this).selectedValue;
switch (selectedTheme) {
case "themeA":
require("themeA")
break;
case "themeB":
require("themeB")
break;
default:
require("defaultTheme")
}
}
webpack.config.js
resolve: {
alias: {
"theme$": path.resolve(theme),
"themeA$": path.resolve("./src/css/themeA.css"),
"themeB$": path.resolve("./src/css/themeB.css"),
...
如果您想要三个不同的构建,每个构建都有不同的主题,您可以执行以下操作:
如果您想要使用主题 A 运行 构建:npm run themeA
如果你想要使用 themeB 运行 构建:npm run themeB
package.json
"scripts": {
"themeA": "webpack --env.theme=themeA --mode development",
"themeB": "webpack --env.theme=themeB --mode development",
webpack.config.js
module.exports = (env) => {
var theme = "";
if (env.theme) {
theme = "./src/css/" + env.theme + ".css"
}
console.log(path.resolve(theme));
return {
entry: './src/index.js',
output: {
path: distfolder,
filename: 'bundle.js'
},
resolve: {
alias: {
"theme$": path.resolve(theme)
}
},
...
..
.
在你的入口点你可以做:
index.js
import "theme"