1.0.0 • Published 5 months ago
add-config-to-build-last v1.0.0
add-config-to-build-last
给打包后的目录文件中添加或修改配置插件。
为什么要开发这么个插件?
使用uni-app打包成百度小程序时,uni-app配置不了百度小程序中的project.swan.json文件,就考虑用webpack插件的方式添加配合。
开发插件中的思考
考虑到如果这个插件只支持百度小程序中project.swan.json文件中添加配置,那么开发另一个比如抖音小程序时,也有一个配置文件uni-app不提供相关配置,又得重新写一个添加其他小程序配置的插件。然后再开发另一个小程序比如支付宝小程序等等等,无穷尽也。。。。 所以需要开发一个通用的,传入文件名,再传入配置项就可以往指定文件添加配置的插件
接着思考,如果不止要往一个文件中添加配置呢?那么需要传一个数组,每个数组传文件名和配置
接着思考,如果不在要修改配置的文件不在根目录下呢?那么需要的就不是文件名,而是一个打包后该文件的路径
接着思考,现在是个json文件,那其他文件怎么办呢,不能让他报错呀,而且文件不存在怎么办?那么传入其他类型的文件,直接替换调文件内容,文件不存在直接创建文件
所以这个插件可以修改打包后的任意文件,也可以在打包后的任意目录添加文件,开发者一定是需要时再使用该插件,谨慎使用
安装
npm install add-config-to-build-last
使用
以在project.swan.json中添加相关配置为例
module.exports = {
configureWebpack: config => {
config.plugins.push(new AddConfigToBuildLast([
{
path: "project.swan.json", // 打包后的文件路径
content: { // 需要修改的配置内容
"compilation-args": {
"common": {
"quickPreview": false,
"ignorePrefixCss": true,
"ignoreSourceMap": false,
"ignoreCompileOnDemand": true,
"useCheapSourceMap": false,
"useThread": true,
"enhance": true,
"useNewCompileUpload": true
},
"forceChanged": {},
"useOldCompiler": false
},
},
config: { // 其他配置
isAttrMerge: false // 属性是否合并(默认true合并,为false时直接替换,只有修改的配置内容为数组或对象时该配置有效)
}
},
]))
}
}
参数
传入一个数组,数组每一项为需要修改或添加的文件配置。
path:Stying类型,打包后的文件路径,必须要加后缀名。
比如打包后的文件目录为
-pages -home home.wxml home.js home.json -index index.js index.wxml app.js app.json
- 要修改app.json,那么path: app.json
- 要修改pages/home/home.json,那么path: pages/home/home.json
- 要在pages/index中添加index.json,那么path: pages/index/index.json
- 如果目录中没有该文件,则新建该文件
content:any类型,要添加或修改的文件内容
- 要是json文件传入空对象,那么不会改变文件内容
- 除了json文件,传入的内容会直接替换原文件内容
config:Object类型,其他配置
- isAttrMerge:属性是否合并(默认true合并,为false时直接替换,只有为数组和对象时这样)
- 只有content传入的为Object类型并且path传入的为json文件时,表示Object中的属性是否于原文件中的该属性合并
- isAttrMerge:属性是否合并(默认true合并,为false时直接替换,只有为数组和对象时这样)
1.0.0
5 months ago