2017-12-30 41 views
0

프런트 엔드 html/scss 프로젝트에서 사용할 재사용 가능한 구성 요소를 만드는 방법을 실험하고 있습니다. 모든 구성 요소가 동일한 폴더 및 파일 구조를 가지면이 작업을 자동화 할 수 있는지 알고 싶습니다.반복적 인 파일 및 폴더 만들기 자동화 npm

저는 현대적인 웹 디자인의 워크 플로우와 전문 용어에 익숙하지 않습니다. 최근에는 npm (현재는 노드 삭스와 브라우저 동기화 사용)으로 시작했습니다. 누군가가 파일과 폴더의 반복 작성을 자동화하는 가장 간단한 방법을 권장 할 수 있다면 좋겠다. 아마도 어떤 npm 패키지가이 목적을 위해 존재할 수 있는지에 관한 것입니다. (npm folder-template을 시도했지만 윈도우 머신에서 제대로 작동하지 않는다고 믿을만한 이유가 있습니다.)

누군가가 그러한 작업에 사용 된 용어를 설명 할 수 있다면 좋겠다. 스캐 폴딩, 템플릿, Yeoman 및 npm과 같은 용어가 나오기 때문에 나는 어떻게해야하는지 혼란 스럽다.

예 구조 : 시간과 도움, 샘

답변

0

'풍덩'의 이름에 NPM 패키지

featured-content/ 
|  break-points/ 
|  |_base.scss 
|  |_xl.scss 
|  |_l.scss 
|  |_m.scss 
|  |_s.scss 
|  |_xs.scss 
| 
|_featured-content.scss 

enter image description here

많은 감사는 내가 찾던 정확히 패턴을 기반으로 파일 및 폴더를 생성합니다. 'plop'은 파일을 더 간단하고 반복적으로 생성하지 않고 사용자 프롬프트와 핸들 바 템플릿을 지원하는 생성자 프레임 워크입니다.

링크 plopfile.js의

https://plopjs.com/documentation/

https://www.npmjs.com/package/plop

구현 패키지와 설명서를

module.exports = function (plop) { 

//prepend selectors to avoid conflicts 
var companyName = 'super'; 
var themeName = 'awesome'; 

// prefix combine 
var prefix = companyName + '-' + themeName + '-'; 

//paths 
var blockPath = 'includes/blocks/components/'; 
var sectionPath = 'includes/sections/components/'; 
var blockModifyPath = 'includes/blocks/_blocks.scss'; 
var sectionModifyPath = 'includes/sections/_sections.scss'; 

plop.setHelper('prefix', function() { 
    return prefix; 
}); 

// block generator 
plop.setGenerator('block', { 
    description: 'generate block', 
    prompts: [{ 
     type: 'input', 
     name: 'name', 
     message: 'block name please' 
    }], 
    actions: [ 
     //import file 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/_{{name}}.scss', 
      templateFile: 'plop-templates/blocks/blocks.hbs' 
     }, 
     //php file 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/{{name}}.php', 
      templateFile: 'plop-templates/blocks/php.hbs' 
     }, 
     //breakpoint base size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_base.scss', 
      templateFile: 'plop-templates/blocks/base.hbs' 

     }, 
     //breakpoint xl size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_xl.scss', 
      templateFile: 'plop-templates/blocks/xl.hbs' 
     }, 
     //breakpoint l size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_l.scss', 
      templateFile: 'plop-templates/blocks/l.hbs' 
     }, 
     //breakpoint m size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_m.scss', 
      templateFile: 'plop-templates/blocks/m.hbs' 
     }, 
     //breakpoint s size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_s.scss', 
      templateFile: 'plop-templates/blocks/s.hbs' 
     }, 
     //breakpoint xs size 
     { 
      type: 'add', 
      path: blockPath + '{{name}}/break-points/_xs.scss', 
      templateFile: 'plop-templates/blocks/xs.hbs' 
     }, 
      //modify blocks file 
      { 
       type: 'modify', 
       path: blockModifyPath, 
       pattern: /(\/\/-- IMPORT BLOCKS --)/gi, 
       template: '$1\r\[email protected] "components/{{name}}/{{name}}";' 
      } 
     ] 
    }); 
    //section generator 
    plop.setGenerator('section', { 
     description: 'generate section', 
     prompts: [{ 
      type: 'input', 
      name: 'name', 
      message: 'section name please' 
     }], 
     actions: [ 
      //import file 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/_{{name}}.scss', 
       templateFile: 'plop-templates/sections/sections.hbs' 
      }, 
      //php file 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/{{name}}.php', 
       templateFile: 'plop-templates/sections/php.hbs' 
      }, 
      //breakpoint base size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_base.scss', 
       templateFile: 'plop-templates/sections/base.hbs' 

      }, 
      //breakpoint xl size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_xl.scss', 
       templateFile: 'plop-templates/sections/xl.hbs' 
      }, 
      //breakpoint l size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_l.scss', 
       templateFile: 'plop-templates/sections/l.hbs' 
      }, 
      //breakpoint m size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_m.scss', 
       templateFile: 'plop-templates/sections/m.hbs' 
      }, 
      //breakpoint s size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_s.scss', 
       templateFile: 'plop-templates/sections/s.hbs' 
      }, 
      //breakpoint xs size 
      { 
       type: 'add', 
       path: sectionPath + '{{name}}/break-points/_xs.scss', 
       templateFile: 'plop-templates/sections/xs.hbs' 
      }, 
      //modify sections file 
      { 
       type: 'modify', 
       path: sectionModifyPath, 
       pattern: /(\/\/-- IMPORT SECTIONS --)/gi, 
       template: '$1\r\[email protected] "components/{{name}}/{{name}}";' 
      } 
     ] 
    }); 
};