项目介绍
file-lane模块用于文件转换,可实现文件1对1的转换,也可实现1对多、多对1的文件转换。
安装使用
-
安装
npm i file-lane
-
快速上手
const { FileLane } = require('file-lane')
const { UxLoader } = require('aiot-toolkit/aiotpack')
const Path = require('path')
const projectPath = Path.join(__dirname, '../testProject')
const projectConfig = {
get output() {
const name = Path.basename(projectPath)
const result = `../.temp_${name}`
return result
},
module: {
rules: [
{
test: [/.+\.ux$/],
exclude: [/app\.ux/],
loader: [UxLoader]
}
]
}
}
new FileLane(projectConfig).start()
参数配置
output
描述: 输出目录
参数类型: string
示例:
'temp_project'
module
描述: 文件转换规则集
参数类型: { rules: IRule[] } // IRule:转换规则
interface IRule {
test: MatchType
loader: ILoaderClass[]
exclude?: MatchType
include?: MatchType
}
示例:
{
rules: [
{
test: [/.+\.ux$/],
exclude: [/app\.ux/],
loader: [UxLoader]
}
]
}
fileCollector
描述: 文件收集器,输入文件路径,返回待合并的文件路径,常用于多转1,默认值为直接使用源文件
参数类型:
(file: string) => string[]
示例:
(file: string) => {
const fileList = [file]
const { dir, name, ext } = path.parse(file)
if (ext === '.hml') {
['.js', '.css'].map((item) => {
const collectFile = path.join(dir, `${name}${item}`)
if (fs.existsSync(collectFile)) {
fileList.push(collectFile)
}
})
return fileList
}
}
include
描述: 指定文件范围
参数类型:
OneMatchType | OneMatchType[]
示例:
include = ['src']
exclude
描述: 需排除的文件范围
参数类型:
OneMatchType | OneMatchType[]
示例:
exclude = [/node_modules/]
plugins
描述: 插件,在每个文件转换完成前后,所有文件转换完成前后,在打包完成前后会触发
参数类型:
IPlugin[]
示例:
preWorks
描述: 前置工作,所有文件转换前的工作
参数类型:
PreWork[]
示例:
preWorks = [validateManifest]
const validateManifest: PreWork<IJavascriptCompileOption> = async (context) => {
}
followWorks
描述: 后续工作,所有文件转换后的工作
参数类型:
FollowWoker<O>[]
示例:
followWorks = [
{
worker: toRpk,
workerDescribe: 'follow work'
}
]
const toRpk: FollowWork<IJavascriptCompileOption> = async (context, config, compilerOption) => {
}
watchIgnores
描述: 配置watch时忽略的文件或者文件夹
参数类型:
MatchType
示例:
watchIgnores = [/node_modules/, '/build/', '/dist/']