Javascript/webpack:如何用自定义的文件循环连接目录中的所有json文件
Javascript / webpack : how to concatenate all json files in directory with a custom loop over files
我正在用webpack构建一个reactJs捆绑包。我目前正在尝试将json文件连接到一个对象中,以便与i18next一起使用。我觉得这很简单,我不想使用过于复杂的解决方案。
我有一个类似的目录结构
messages/locale_name/domain_name.json
如何导入代码中常规对象中的所有json文件
到目前为止,我在一开始就很挣扎,因为我发现了需要的建议("s"),但webpack告诉我它无法解决fs模块,我看到我无法安装它,因为它是默认节点配置的一部分。
感谢您的帮助。
谢谢!
经过一段的摸索,这其实很容易。以下是我的结局。关键是正确设置JSON加载器。
安装Webpack的JSON加载器
npm install --save-dev json-loader
将JSON加载程序添加到Webpack加载程序
- 这是使用上下文拉入文件所必需的
- 将其添加到您的webpack.config.js加载程序
{ test: /'.json$/, loader: 'json' },
- 决赛可能是这样的:
module.exports = { entry: './src/app.js', output: { path: __dirname, filename: './build/bundle.js' }, module: { loaders: [ { test: /'.json$/, loader: 'json' } ] } }
使用上下文将文件加载到中并将其保存到数组中
在我的app.js:中
function requireAll( requireContext ) {
return requireContext.keys().map( requireContext );
}
var modules = requireAll( require.context("./modules", false, /.json$/) );
- 其中"modules"是我的app.js中的一个子目录(在我的例子中是./src/modules)
- 所有JSON文件都将加载到数组
[Object, Object, Object]
中,我将其存储到var modules
中
这最好用json加载器这样的东西来完成
安装了它(npm install json-loader --save-dev
)后,您可以按照项目自述文件中的描述进行导入:
var json = require("json!./messages/locale_name/domain_name.json");
或者,您可以在webpack.config.js中添加一个加载器,然后正常导入json:
webpack.config.js:
module: {
loaders: [
{test: /'.json$/, loader: 'json-loader'},
]
},
在你的来源:
var json = require("./messages/locale_name/domain_name.json");
当然,如果您在项目
@Sébastien检查这个插件https://www.npmjs.com/package/merge-jsons-webpack-plugin
您可以将文件/模式数组作为输入进行传递,它将以json形式发出单个文件。
例如,如果目录/nodmodules/module-a中有许多json文件和/node_modules/module-b
您可以使用下面的模式将所有json连接到一个json文件中,如下面的
new MergeJsonWebpackPlugin({
"files": ['./jsons/file1.json',
'./jsons/file3.json',
'./jsons/file2.json'],
"output":{
"fileName":"./dist/result.json"
}
})
免责声明:我为这个插件
要合并json文件,请使用merge-webpack插件(也可以按文件名分组)
配置示例:
MergePlugin = require("merge-webpack-plugin");
module.exports = {
module: {
rules: [
{
test: /'.(json)$/i, use: [ MergePlugin.loader() ],
// also yaml by preloader there too
test: /'.(yaml)$/i, use: [ MergePlugin.loader(), 'yaml-loader' ],
}
]
},
plugins: [
new MergePlugin({
search: './src/**/*.json',
group: '[name]',
})
]
}
这个示例文件将按文件名分组。每个组都将被加载、合并并保存到目标json文件中。要要求目标合并文件,您只需要一个源文件并加载它。
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 不显示带有本地json文件数据的谷歌地图脚本
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 加载两个具有相同父密钥名称的json文件
- 使用JSON文件中的变量(字符串)填充文本区域
- 动态显示JSON文件内容
- 将JSON转换为放入Sdcard中的CSV文件
- 正在尝试将JSON文件放入JS数组
- 如何检查Json文件更新,如果更新了,则用更新的数据刷新我的页面
- 单击按钮更改加载到表中的JSON文件
- 创建一个包含两个文件 json 的 Angularjs 过滤器
- Multer上传文件+JSON对象
- 使用node.js读取和写入文件(JSON)
- 如何在angularjs中设置变量's值来上传文件json数据
- 向现有文件. Json写入Json,没有“语法错误”
- 如何保存更新json(文件json)与jquery或javascript
- AngularJS:当使用$http请求一个文件(json content)时发生SyntaxError
- 如何简化此代码?将文件json转换为数组json
- 如何从外部文件JSON创建JAVASCRIPT数组