├── README.md ├── .gitignore ├── .npmignore ├── package.json └── index.js /README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | node_modules/ 3 | 4 | .DS_Store 5 | *.db 6 | *.bak 7 | *.tmp 8 | *.cmd 9 | ~* 10 | 11 | upload.py -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /.settings 3 | /.project 4 | /.gitignore 5 | /node_modules 6 | /test 7 | /.tmp 8 | 9 | .DS_Store 10 | 11 | *.db 12 | *.bak 13 | *.tmp 14 | *.cmd 15 | ~* 16 | 17 | upload.py -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fis-scaffold-pc", 3 | "version": "0.0.6", 4 | "description": "scaffold pc", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/xiangshouding/fis-scaffold-pc.git" 12 | }, 13 | "keywords": [ 14 | "fis", 15 | "scaffold", 16 | "fis-plus" 17 | ], 18 | "author": "fansekey", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/xiangshouding/fis-scaffold-pc/issues" 22 | }, 23 | "homepage": "https://github.com/xiangshouding/fis-scaffold-pc" 24 | } 25 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * fis.baidu.com 3 | */ 4 | 5 | var path = require('path'); 6 | 7 | module.exports = function (options) { 8 | var scf_opts = {}; 9 | 10 | var dist = options.dir; 11 | 12 | function replace_delimiter_(string) { 13 | //if default, not replace 14 | if (options.ld == '{%') { 15 | return string; 16 | } 17 | return string.replace( 18 | new RegExp('\\{%|%\\}', 'g'), 19 | function (m) { 20 | if (m == '{%') m = options.ld; 21 | else if (m == '%}') m = options.rd; 22 | return m; 23 | }); 24 | } 25 | 26 | function module_fn() { 27 | if (!options.withPlugin) { 28 | scf_opts.exclude = /package\.json|\/plugin\/.*|page\/layout.tpl|README.md/i; 29 | scf_opts.deps = false; //don't download `pc-plugin` 30 | } 31 | 32 | fis.scaffold.download('pc-scaffold-module', dist, scf_opts, function (paths) { 33 | if (options.withPlugin) { 34 | fis.scaffold.mv(path.resolve(dist, 'pc-plugin'), path.resolve(dist, 'plugin')); 35 | } 36 | fis.scaffold.mv(path.resolve(dist, 'pc-scaffold-module'), dist); 37 | fis.scaffold.prompt(dist, function () { 38 | var files = fis.util.find(dist, /.*\.tpl$/i); 39 | files.forEach(function (filepath) { 40 | fis.util.write(filepath, replace_delimiter_(fis.util.read(filepath, {encoding: 'utf-8'}))); 41 | }); 42 | }); 43 | }); 44 | } 45 | 46 | function widget_fn() { 47 | fis.scaffold.download('pc-scaffold-widget', dist, {}, function (paths) { 48 | fis.scaffold.mv(path.resolve(dist, 'pc-scaffold-widget'), dist); 49 | var files = fis.util.find(dist); 50 | fis.util.map(files, function (index, filepath) { 51 | 52 | if (filepath) { 53 | 54 | var name = require('path').basename(dist); 55 | 56 | //replace rel path 57 | var content = fis.util.read(filepath, { 58 | encoding: 'utf8' 59 | }); 60 | 61 | fis.util.write( 62 | filepath, 63 | replace_delimiter_( 64 | content 65 | .replace(/widget\.(js|css|tpl)/g, function (match, ext) { 66 | match = name + '.' + ext; 67 | return match; 68 | }) 69 | ) 70 | ); 71 | 72 | var m = filepath.match(/widget\.(js|css|tpl)$/); 73 | 74 | if (m) { 75 | fis.scaffold.mv(filepath, path.resolve(dist, name + '.' + m[1])); 76 | } 77 | } 78 | }); 79 | 80 | fis.scaffold.prompt(dist); 81 | }); 82 | } 83 | 84 | return { 85 | module: module_fn, 86 | widget: widget_fn 87 | } 88 | }; 89 | 90 | module.exports.command = function (commander) { 91 | //add option 92 | //add command 93 | 94 | var pragram = path.basename(process.argv[1]); 95 | var command = commander._name; 96 | 97 | commander 98 | .option('--ld ', 'smarty left_delimiter', String, '{%') 99 | .option('--rd ', 'smarty right_delimiter', String, '%}'); 100 | 101 | commander.on('--help', function () { 102 | var egs = [ 103 | 'module -d ./to/directory/other', 104 | 'module -d ./to/directory/common --with-plugin', 105 | 'module -d ./to/directory/other --ld \'<%\' --rd \'%>\'', 106 | 'widget -d ./widget/box', 107 | 'modjs ' + '//just download \'modjs\''.grey 108 | ]; 109 | var sp = '\n ' + '$ ' + pragram + ' ' + command + ' ' ; 110 | console.log(' Examples:'); 111 | console.log(sp + egs.join(sp)); 112 | }); 113 | } 114 | --------------------------------------------------------------------------------