博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack Import 动态文件
阅读量:5144 次
发布时间:2019-06-13

本文共 2577 字,大约阅读时间需要 8 分钟。

其实React Import scss 是非常简单的,比如一般写法import './PromotionPage.scss';,今天遇到一个样式需要覆盖,那么修改后的代码变成了:

import './PromotionPage.scss';

import { config } from "../../../common/config";

if (config.spec == "venetian") {
    import '../../../requirement/venetian/stuff/PromotionPage.scss';
}

很明显程序报错了:'import' and 'export' may only appear at the top level

最后修改为

import { config } from "../../../common/config";if (config.spec == "venetian") {    import ('../../../requirement/venetian/stuff/PromotionPage.scss');}

但是在webpack 打包的时候,会把requirement/xxx/stuff/PromotionPage.scss路径下的文件一起打包,会比较麻烦,所以需要在打包前去替换文件中变量,这里的变量也就是一个占位符,

在根目录新建一个prebuild.js文件

var glob = require("glob")var fs = require("fs"); function readFile(path) {    return fs.readFileSync(path).toString();}function writeFile(path, content) {    fs.writeFileSync(path, content, {encoding:"utf8",flag:"w"});} function readConfig() {    var configContent = readFile("src/common/config.js");    var i = configContent.indexOf("{
"); configContent = configContent.substring(i); return JSON.parse(configContent);}var config = readConfig();const startTag = "//__start";const endTag = "//__end";function replaceVariables(content) { var tag = false; var ret = ""; var off = 0; while (true) { var i = content.indexOf(startTag, off); if (i < 0) { if (tag) { ret += content.substring(off); return ret; } else { return false; } } else { tag = true; } var j = content.indexOf("\n", i + startTag.length) var tem = content.substring(i + startTag.length, j).trim(); tem = tem.replace("#{spec}", config.spec); var k = content.indexOf(endTag, j); ret += content.substring(off, j) + "\n"; ret += tem + "\n"; off = k; }}glob("src/**/*.js", {}, function (er, files) { for (var i = 0; i < files.length; i++) { var file = files[i]; var content = readFile(file); content = replaceVariables(content); if (content) { console.log("prebuild中文的" + file); // console.log(content); writeFile(file, content); } }});

再修改package.json

"scripts": {    "prebuild": "node prebuild.js",    "start": "node prebuild.js && webpack-dev-server -d --progress --colors",    "build": " node prebuild.js && webpack --progress --color --verbose --config ./webpack.prd.config.js"  },

使用例子:

//__start import "./themes/#{spec}/skin.scss";import "./themes/xxx/skin.scss";//__end

 

转载于:https://www.cnblogs.com/majiang/p/9996068.html

你可能感兴趣的文章
【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
Java NIO系列教程(九) ServerSocketChannel
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
postgis几何操作函数集
查看>>
ACM题目————还是畅通工程
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
35. Search Insert Position(C++)
查看>>
ubuntu 卡在登陆界面无法进入桌面,但是可以进入命令行界面
查看>>
【转】vim中多标签和多窗口的使用
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
chrome 禁止自动更新
查看>>
一些php文件函数
查看>>
std::min error C2059: 语法错误:“::” 的解决方法
查看>>
Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比
查看>>
「图形学」直线扫描——Bresenham算法改进了中点Bresenham算法?
查看>>
jQuery 给div绑定单击事件
查看>>
Exceptionless 生产部署笔记
查看>>
有关快速幂取模
查看>>