我如何在 webpack 配置中获取 lang html 属性
how can i get the lang html attribute in webpack configuration
const lang = "the lang html attribute value";
var languages = {
"fr": require("./languages/fr.json"),
"en": require("./languages/en.json")
};
var configuration = Object.keys(languages).map(function(language) {
const loadedLang = (lang.indexOf("fr") > -1) ? "fr" : "en";
return {
name: loadedLang,
entry: './assets/js/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'assets/js/dist')
},
plugins: [
new I18nPlugin(
languages[loadedLang]
)
]
}
});
所以我正在尝试获取 <html lang="en-US">
lang 属性并且我知道我无法从 webpack 配置文件访问 DOM。
我的问题是:
有人知道如何执行此操作或如何从 webpack 访问本地存储吗?
PS:
我尝试了一个 node-localstorage 包,但它没有完成我想要的工作
您问题的答案是使用 fs api 加载文件,然后使用正则表达式提取您的语言:
const fs = require('fs');
const content = fs.readFileSync('PATH_TO_INDEX.HTML', options: { encoding: 'utf8' });
const lang = content.match(/<html lang="(.*)"/)[1];
但我建议使用 "webpack" 方式:
为每种语言创建一个单独的文件夹,其中包含 index.html 和每种语言特定的 js 文件。
为此,添加以下内容:
output: {
path: path.resolve(__dirname, `assets/js/dist/${language}/`)
},
plugins: [
new HtmlWebpackPlugin({
template: 'PATH_TO_YOUR_TEMPLATE',
lang: language,
title: 'your page title',
})
]
请不要忘记安装 html-webpack-plugin 并在您的配置顶部要求它。
并创建一个包含以下内容的新文件index.html:
<!DOCTYPE html>
<html lang="<%= htmlWebpackPlugin.options.lang %>">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
</body>
</html>
现在,对于每种语言,都会在每个语言文件夹中创建一个单独的 index.html,其中包含正确的语言和该语言的正确 js 文件。
所以不是 html 文件决定了语言集,而是 webpack 配置。
const lang = "the lang html attribute value";
var languages = {
"fr": require("./languages/fr.json"),
"en": require("./languages/en.json")
};
var configuration = Object.keys(languages).map(function(language) {
const loadedLang = (lang.indexOf("fr") > -1) ? "fr" : "en";
return {
name: loadedLang,
entry: './assets/js/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'assets/js/dist')
},
plugins: [
new I18nPlugin(
languages[loadedLang]
)
]
}
});
所以我正在尝试获取 <html lang="en-US">
lang 属性并且我知道我无法从 webpack 配置文件访问 DOM。
我的问题是:
有人知道如何执行此操作或如何从 webpack 访问本地存储吗?
PS: 我尝试了一个 node-localstorage 包,但它没有完成我想要的工作
您问题的答案是使用 fs api 加载文件,然后使用正则表达式提取您的语言:
const fs = require('fs');
const content = fs.readFileSync('PATH_TO_INDEX.HTML', options: { encoding: 'utf8' });
const lang = content.match(/<html lang="(.*)"/)[1];
但我建议使用 "webpack" 方式:
为每种语言创建一个单独的文件夹,其中包含 index.html 和每种语言特定的 js 文件。
为此,添加以下内容:
output: {
path: path.resolve(__dirname, `assets/js/dist/${language}/`)
},
plugins: [
new HtmlWebpackPlugin({
template: 'PATH_TO_YOUR_TEMPLATE',
lang: language,
title: 'your page title',
})
]
请不要忘记安装 html-webpack-plugin 并在您的配置顶部要求它。
并创建一个包含以下内容的新文件index.html:
<!DOCTYPE html>
<html lang="<%= htmlWebpackPlugin.options.lang %>">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
</body>
</html>
现在,对于每种语言,都会在每个语言文件夹中创建一个单独的 index.html,其中包含正确的语言和该语言的正确 js 文件。
所以不是 html 文件决定了语言集,而是 webpack 配置。