main.js 3.82 KB
module.exports = (baseUrl) => {
    const base = require("./base")(baseUrl);
    const { output, src, mods, del } = base;
    const clean = {
        js: [`${output.js}/**/*.js`, `!${output.js}/lib/require/*.js`, `${output.js}/lib/require/require.min_main.js`],
        css: [`${output.css}/**/*.css`],
        html: [output.html]
    };
    const mSrc = {
        js: [src.js],
        css: [src.css],
        resolvedLess: [
            `${baseUrl}/less/+(common|component|service)/*.less`,
            `${baseUrl}/less/!(variables).less`
        ],
        less: [
            `${baseUrl}/css/+(common|component|service)/*.less`,
            `${baseUrl}/css/main.less`
        ],
        theme: `${baseUrl}/css/theme/*.less`,
        variables: `${baseUrl}/css/variables.less`,
        html: [src.html],
        amdConfig: `${baseUrl}/js/amdConfig.js`
    };
    
    mods.forEach(mod => {
        clean.js.push(`!${output.js}/${mod}/**/*.js`)
        clean.css.push(`!${output.css}/${mod}/**/*.css`)
        clean.html.push(`!${output.html}/${mod}/**/*.html`)
        mSrc.js.push(`!${baseUrl}/js/${mod}/**/*.js`);
        mSrc.css.push(`!${baseUrl}/css/${mod}/**/*.css`);
        mSrc.html.push(`${baseUrl}/template/${mod}/**/*.html`);
    });

    let delArr = del;
    
    delArr.push.apply(delArr, [
        `${output.js}/amdConfig.js`,
        `${output.js}/main/mobilemode.js`,
        `${output.js}/main/log.js`,
        `${output.js}/main/pageStack.js`,
        `${output.js}/main/pageEvent.js`,
        `${output.js}/main/Component.js`,
        `${output.js}/main_demo/run.js`,
        `${output.js}/main_export/run.js`,
        `${output.js}/main_export/mobilemode.js`,
        `${output.js}/mobilemode.util_wev8.js`,
        `${output.html}`,
        `${baseUrl}/less`
    ]);
    const exportsCss = [
        `${output.css}/main-default.css`,
        `${output.css}/+(common|component|service)/*-default.css`
    ];

    return {
        name: "main",
        clean: clean,
        src: mSrc,
        defaultTheme: 'default',
        output: {
            theme: `${baseUrl}/less/theme`,
            less: `${baseUrl}/less`,
            amdConfig: `${output.js}/amdConfig.js`
        },
        cssOptimize: {
            includes: [
                `${output.css}/lib/mobilebone/mobilebone_wev8.css`,
            ],
            mainCss: (theme = '') => `${output.css}/main${theme ? `-${theme}` : ''}.css`
        },
        exports: {
            css: [
                { name: 'mobile.css', css: exportsCss, parent: '' },
                { name: 'mobile_designer.css', css: exportsCss, parent: '.wm-page-wrapper' }
            ]
        },
        themePath: `${baseUrl}/css/theme/`,
        modules: [
            {
                name: "main",
                output: `${output.js}/main`
            }, 
            {
                name: "main_demo",
                output: `${output.js}/main_demo/`,
                external: [`${output.js}/main_demo/run.js`]
            }, 
            {
                name: "main_export",
                output: `${output.js}/main_export/`,
            }
        ],
        replace: {
            regExp: {
                css: "main|mobilemode_wev8",
                js: "main_demo|main|loader"
            },
            files: [
                // {
                //     src: `${baseUrl}/view.jsp`,
                //     output: `${baseUrl}`
                // },
                {
                    src: `${baseUrl}/view.html`,
                    output: `${baseUrl}`
                }, 
                {
                    src: `${baseUrl}/portal.jsp`,
                    output: `${baseUrl}`
                }, 
                // {
                //     src: `${baseUrl}/demo/plugin/index.html`,
                //     output: `${baseUrl}/demo/plugin`
                // }
            ]
        },
        del: delArr
    }
};