ccqgithub/fis3-parser-vue-component

解析出来的js文件可不可以合并?

k-jay-wang opened this issue · 9 comments

解析出来的js文件只支持同名依赖这种加载方式吗?
能不能把拆出来的文件做合并处理呢?
我自己使用packTo方法做合并失败了。。

可以啊,你怎么配置的

`fis.match('modules/**.vue', {
isMod: true,
rExt: 'js',
useSameNameRequire: true,
parser: fis.plugin('vue-component')
});

fis.match('(modules/**.css)', {
useSameNameRequire: true,
release: 'static/css/$1'
});

fis.match('modules/(**).js', {
isMod: true,
useSameNameRequire: true,
moduleId: '$1',
rExt: 'js',
});

fis.match('node_modules/().js', {
isMod: true,
rExt: 'js'
});
fis.match('modules/(
.js)', {
packTo: 'static/scripts/modules.js'
})

fis.match('::package', {
postpackager: fis.plugin('loader')
});`

fis-conf里面是这么写的,但是打包的时候没有把文件打进去。。。

fis.match('modules/**.vue:css', {
  packTo: 'component-all.css'
});

试试这样呢

fis.match('modules/**.vue:js', {
packTo: 'static/scripts/modules.js'
})

使用了这种方式,也还是不行。。

测试了一下,CSS是可以的,但是JS文件不行。。。是不是因为JS文件是被rExt转出来的所以不行。。

vue:js 这个js是对应你组件里面script标签的lang的

对的,我的意思就是是不是因为在走到packTo这一步的时候其实文件夹里的.js还没有生成,所以无法被packTo打包进去,或者是不是 .vue:js这样的写法不被packTo这个方法识别所以无法打包进去。。。

fis.match('(modules/**.css)', {
packTo: 'static/css/modules-all.css'
});

fis.match('modules/**.js', {
packTo: 'modules/modules-all.js'
});

很奇怪这一点,就是css和js都是.vue文件拆分来的,css文件能被打包合并,js文件就不行。。。

问题解决啦~

在packTo方法里面不要用.vue:js,直接使用.vue,就会把parser后的js文件合并进来。
fis.match('::package', { packager: fis.plugin('map', { 'static/scripts/modules-all.js': [ 'modules/**.js', 'modules/**.vue' ] }) });

感谢花费时间帮我解答问题~

@k-jay-wang 原因是这样的,vue组件真正输出内容的其实是里面的js,而样式是会创建新文件,所以配置方式略有不同~~