falcon-webpack
Advanced tools
@@ -17,2 +17,3 @@ const ts = require('typescript'); | ||
| .replace(/\//g, '-') | ||
| .replace(/\_/g, '-') | ||
| .replace(/([A-Z])/g, m => '-' + m.toLowerCase()); | ||
@@ -30,2 +31,3 @@ exports.toLine = toLine; | ||
| .replace(/\-(\w)/g, (m, tail) => tail.toUpperCase()) | ||
| .replace(/\_(\w)/g, (m, tail) => tail.toUpperCase()) | ||
| .replace(/\/\:(\w)/g, (m, tail) => tail.toUpperCase()) | ||
@@ -36,3 +38,3 @@ .replace(/\/(\w)/g, (m, tail) => tail.toUpperCase()); | ||
| /** | ||
| * | ||
| * extract | ||
| * @param {string} file | ||
@@ -109,25 +111,15 @@ */ | ||
| const stringifySplit = (routes) => { | ||
| let routesStr = ''; | ||
| routesStr += ` | ||
| import React from 'react'; | ||
| import { ChunkContainer } from 'qm-router'; | ||
| `; | ||
| let routesStr = `\nimport React from 'react';\nimport { ChunkContainer } from 'qm-router';`; | ||
| // declaration | ||
| routesStr += ` | ||
| const entries = [ | ||
| `; | ||
| routesStr += `\nconst entries = [\n`; | ||
| const tranversal = routes => { | ||
| let str = ''; | ||
| routes.forEach(route => { | ||
| str += ` | ||
| { | ||
| str += `\n{ | ||
| name: '${route.name}',\npath: '${route.path}',\n${ | ||
| route.strict ? 'strict: true,\n' : ''}${ | ||
| route.exact ? 'exact: true,\n' : ''}${ | ||
| route.sensitive ? 'sensitive: true,\n' : ''} | ||
| render: () => import(/* webpackChunkName: "${route.chunkName}" */ '${route.require}'), | ||
| ${route.routes && route.routes.length > 0 ? ('routes: [' + tranversal(route.routes)) + '],' : ''} | ||
| }, `; | ||
| route.sensitive ? 'sensitive: true,\n' : ''}render: () => import(/* webpackChunkName: "${route.chunkName}" */ '${route.require}'), | ||
| ${route.routes && route.routes.length > 0 ? ('routes: [' + tranversal(route.routes)) + '],' : ''}}, `; | ||
| }); | ||
@@ -138,9 +130,5 @@ return str; | ||
| routesStr += tranversal(routes); | ||
| routesStr += ` | ||
| ]; `; | ||
| routesStr += `\n]; `; | ||
| // export | ||
| routesStr += ` | ||
| export default () => <ChunkContainer entries={entries} />; `; | ||
| routesStr += `\n\nexport default () => <ChunkContainer entries={entries} />; `; | ||
| return routesStr; | ||
@@ -184,5 +172,4 @@ } | ||
| const tranversal = routes => { | ||
| let str = '\n<Switch>'; | ||
| let str = '<Switch>'; | ||
| routes.forEach(route => { | ||
@@ -200,5 +187,4 @@ str += `\n<Route path = "${route.path}" ${route.strict ? 'strict' : ''} ${route.exact ? 'exact' : ''} ${route.sensitive ? 'sensitive' : ''} componnent = { ${route.name}}>`; | ||
| // export | ||
| routesStr += `\nexport default () => (`; | ||
| routesStr += `\n\nexport default () => (\n`; | ||
| routesStr += tranversal(routes); | ||
| routesStr += `\n);\n`; | ||
@@ -205,0 +191,0 @@ return routesStr; |
+28
-15
@@ -7,2 +7,3 @@ const path = require('path'); | ||
| const process = require('process'); | ||
| const os = require('os') | ||
| const { printer } = require('falcon-cores'); | ||
@@ -100,2 +101,19 @@ | ||
| function writeRoutes(routes, { dir, ext }) { | ||
| // create & write .routes | ||
| let routesStr = stringifySplit(routes); | ||
| fs.writeFileSync(path.resolve(dir, `.routes${ext}`), prettier.format(routesStr, | ||
| { | ||
| printWidth: 100, | ||
| tabWidth: 2, | ||
| useTabs: false, | ||
| semi: false, | ||
| singleQuote: true, | ||
| trailingComma: 'es5', | ||
| bracketSpacing: true, | ||
| jsxBracketSameLine: true, | ||
| parser: 'babel' | ||
| }), { encoding: 'utf8' }); | ||
| } | ||
| /** | ||
@@ -117,4 +135,12 @@ * @author gcy[of1518] | ||
| let routes = extract(path.resolve(dir, `entries${ext === '.js' ? '.js' : '.ts'}`)); | ||
| routes.map(route => { route.path.replace(/\/(\S*)\//gi) }) | ||
| if (os.platform() === 'win32') { | ||
| // windows 部分不兼容呢,暂时不支持 windows | ||
| writeRoutes(routes, { dir, ext }); | ||
| resolve(entry); | ||
| return; | ||
| } | ||
| let question; | ||
@@ -140,16 +166,3 @@ let effect; | ||
| // create & write .routes | ||
| let routesStr = stringifySplit(routes); | ||
| fs.writeFileSync(path.resolve(dir, `.routes${ext}`), prettier.format(routesStr, | ||
| { | ||
| printWidth: 100, | ||
| tabWidth: 2, | ||
| useTabs: false, | ||
| semi: false, | ||
| singleQuote: true, | ||
| trailingComma: 'es5', | ||
| bracketSpacing: true, | ||
| jsxBracketSameLine: true, | ||
| parser: 'babel' | ||
| }), { encoding: 'utf8' }); | ||
| writeRoutes(routes, { dir, ext }); | ||
@@ -156,0 +169,0 @@ if (!loop) { lock = false; } |
@@ -5,9 +5,6 @@ 'use strict'; | ||
| const path = require('path'); | ||
| const fs = require('fs'); | ||
| const { fromJS, Map, List } = require('immutable'); | ||
| const { printer } = require('falcon-cores'); | ||
| const { fromJS } = require('immutable'); | ||
| const { splitObject } = require('../util'); | ||
| const HtmlWrite = require('./write'); | ||
| const { tips } = printer; | ||
@@ -14,0 +11,0 @@ /** |
+1
-1
| { | ||
| "name": "falcon-webpack", | ||
| "version": "0.3.4", | ||
| "version": "0.3.5", | ||
| "description": "千米电商云前端框架-webpack插件集&loader", | ||
@@ -5,0 +5,0 @@ "mail": "gcy [guocaoyi@qianmi.com]", |
27045
0.13%12
-7.69%863
-0.35%