解析出来的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,而样式是会创建新文件,所以配置方式略有不同~~