These are chat archives for QingWei-Li/cooking

26th
Dec 2016
weixu
@DoubleK2013
Dec 26 2016 06:32
请问cooking有可以配置输出webpack的各模块的打包信息的参数吗
Layne
@gengxuelei
Dec 26 2016 06:32
同问
cinwell.li
@QingWei-Li
Dec 26 2016 06:32
什么意思。。
什么参数 有例子么
weixu
@DoubleK2013
Dec 26 2016 06:33
blob
像这种 有时要分析打包的后的文件
cinwell.li
@QingWei-Li
Dec 26 2016 06:34
额 被屏蔽掉了 可以自己
等我看看代码。。
Layne
@gengxuelei
Dec 26 2016 06:35
// 分块,异步加载(切换有问题)
const a = resolve => require(['src/components/wx/a.vue'], resolve);

// 分块,同步加载,切换正常
const a = require('bundle-loader!src/components/wx/a.vue');

// 分块,异步加载,切换正常
const a = resolve => {
  require.ensure(['src/components/wx/a.vue'], () => {
  resolve(require('src/components/wx/a.vue'));
  });
};
cinwell.li
@QingWei-Li
Dec 26 2016 06:35

哦 屏蔽掉了的

其实 cooking 有另外一种玩法。。。你可以只用 cooking 生成的配置,依旧用 webpack 跑

Layne
@gengxuelei
Dec 26 2016 06:35
还没来得及做demo
cinwell.li
@QingWei-Li
Dec 26 2016 06:36
也就是 webpack -c cooking.conf.js 。。
Layne
@gengxuelei
Dec 26 2016 06:36
这个require生成的js的路径怎么自定义
都跑到publicPath下面去了
cinwell.li
@QingWei-Li
Dec 26 2016 06:36
什么意思
weixu
@DoubleK2013
Dec 26 2016 06:36
好 那我试试
cinwell.li
@QingWei-Li
Dec 26 2016 06:36
对呀。。
Layne
@gengxuelei
Dec 26 2016 06:38
图片和字体可以定义到/static/pc/img下面,js可以定义到/static/pc/js
cinwell.li
@QingWei-Li
Dec 26 2016 06:39
按需加载就是这样呀。。。
Layne
@gengxuelei
Dec 26 2016 06:39
但是require生成的1.ljsdlkf.js,2.sdjflk.js这些根据依赖分析出来的js都跑到/static下面了,希望让他们跑到/pc/static/js下面去
没地方自定义
cinwell.li
@QingWei-Li
Dec 26 2016 06:39
额 其实我也没玩过
Layne
@gengxuelei
Dec 26 2016 06:40
那vue异步加载的组件实际上都是一个个的js,这些js没办法自定义路径吗
cinwell.li
@QingWei-Li
Dec 26 2016 06:40
你是改的 filename 么
js 文件你是怎么定义让它生成到 pc/js 下的?
Layne
@gengxuelei
Dec 26 2016 06:44
clean: false, // 清空发布目录
  hash: true, // 文件名hash
  sourceMap: true, // 映射源码
  chunk: true, // webpack 的 chunk 配置的简化。接受 String|Object。可以把公共的代码部分提取出去,默认为空
  postcss: [],
  publicPath: '/static/', // cdn路径
  assetsPath: argvEnv + '/img',
  extractCSS: isProd ? argvEnv + '/css/[name].[contenthash:7].css' : true, // 将 CSS 提取出成单独的文件。接受 Boolean|String,默认值为 [name].[contenthash:7].css
  alias: { // 配置路径别名,同webpack 的 resolve.alias
    'src': path.join(__dirname, 'src')
  },
  extends: ['vue2', 'buble', 'lint', 'autoprefixer'],
  externals: build.externals // 全局变量
});

isProd && cooking.add('output.filename', argvEnv + '/js/[name].[hash:7].js');
argvEnv 是pc或者wx或者h5,三个项目
cinwell.li
@QingWei-Li
Dec 26 2016 06:45
{
    entry: {
        page1: "./page1",
        page2: ["./entry1", "./entry2"]
    },
    output: {
        // Make sure to use [name] or [id] in output.filename
        //  when using multiple entry points
        filename: "[name].bundle.js",
        chunkFilename: "[id].bundle.js"
    }
}
chunkFilename 用这个
Layne
@gengxuelei
Dec 26 2016 06:45
哦哦,哈哈,这个问题困扰好多天了
cinwell.li
@QingWei-Li
Dec 26 2016 06:47
。。。。。。搜一下就搜到了。。
Layne
@gengxuelei
Dec 26 2016 06:49
// isProd && cooking.add('output.filename', argvEnv + '/js/[name].[hash:7].js');

let output = {
  filename: argvEnv + '/js/[name].[hash:7].js',
  chunkFilename: argvEnv + '/js/[id].[hash:7].js'
};

isProd && cooking.add('output', output);
所以这样是吗
cinwell.li
@QingWei-Li
Dec 26 2016 06:49
。。。。。。。。。。你这样就把 output 所有内容都覆盖了
Layne
@gengxuelei
Dec 26 2016 06:49
好的,再改下
isProd && cooking.add('output.filename', argvEnv + '/js/[name].[hash:7].js');
isProd && cooking.add('output.chunkFilename', argvEnv + '/js/[id].[hash:7].js');
听君一席话,胜读十年书