1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      如何通過(guò)npm或yarn自動(dòng)生成vue組件-創(chuàng)新互聯(lián)

      這篇文章主要為大家展示了“如何通過(guò)npm或yarn自動(dòng)生成vue組件”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何通過(guò)npm或yarn自動(dòng)生成vue組件”這篇文章吧。

      創(chuàng)新互聯(lián)是一家專業(yè)提供陳巴爾虎企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站html5、小程序制作等業(yè)務(wù)。10年已為陳巴爾虎眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

      實(shí)踐步驟

      安裝一下chalk,這個(gè)插件能讓我們的控制臺(tái)輸出語(yǔ)句有各種顏色區(qū)分

      npm install chalk --save-dev 
      yarn add chalk --save-dev

      在根目錄中創(chuàng)建一個(gè) scripts 文件夾

      新增一個(gè)generateComponent.js文件,放置生成組件的代碼

      新增一個(gè)template.js文件,放置組件模板的代碼

      template.js文件,里面的內(nèi)容可以自己自定義,符合當(dāng)前項(xiàng)目的模板即可

      // template.js
      module.exports = {
       vueTemplate: compoenntName => {
        return `
      
      
      
      
      .${compoenntName} {
      
      }
      
      
      `
       },
       entryTemplate: `import Main from './main.vue'
      export default Main`
      }

      generateComponent.js生成vue目錄和文件的代碼

      // generateComponent.js`
      const chalk = require('chalk') // 控制臺(tái)打印彩色
      const path = require('path')
      const fs = require('fs')
      const resolve = (...file) => path.resolve(__dirname, ...file)
      const log = message => console.log(chalk.green(`${message}`))
      const successLog = message => console.log(chalk.blue(`${message}`))
      const errorLog = error => console.log(chalk.red(`${error}`))
      const { vueTemplate, entryTemplate } = require('./template')
      const _ = process.argv.splice(2)[0] === '-com'
      
      const generateFile = (path, data) => {
       if (fs.existsSync(path)) {
        errorLog(`${path}文件已存在`)
        return
       }
       return new Promise((resolve, reject) => {
        fs.writeFile(path, data, 'utf8', err => {
         if (err) {
          errorLog(err.message)
          reject(err)
         } else {
          resolve(true)
         }
        })
       })
      }
      
      // 公共組件目錄src/base,全局注冊(cè)組件目錄src/base/global,頁(yè)面組件目錄src/components
      _ ? log('請(qǐng)輸入要生成的組件名稱、如需生成全局組件,請(qǐng)加 global/ 前綴') : log('請(qǐng)輸入要生成的頁(yè)面組件名稱、會(huì)生成在 components/目錄下')
      let componentName = ''
      process.stdin.on('data', async chunk => {
       const inputName = String(chunk).trim().toString()
      
       // 根據(jù)不同類型組件分別處理
       if (_) {
        // 組件目錄路徑
        const componentDirectory = resolve('../src/base', inputName)
        // vue組件路徑
        const componentVueName = resolve(componentDirectory, 'main.vue')
        // 入口文件路徑
        const entryComponentName = resolve(componentDirectory, 'index.js')
      
        const hasComponentDirectory = fs.existsSync(componentDirectory)
        if (hasComponentDirectory) {
         errorLog(`${inputName}組件目錄已存在,請(qǐng)重新輸入`)
         return
        } else {
         log(`正在生成 component 目錄 ${componentDirectory}`)
         await dotExistDirectoryCreate(componentDirectory)
        }
      
        try {
         if (inputName.includes('/')) {
          const inputArr = inputName.split('/')
          componentName = inputArr[inputArr.length - 1]
         } else {
          componentName = inputName
         }
         log(`正在生成 vue 文件 ${componentVueName}`)
         await generateFile(componentVueName, vueTemplate(componentName))
         log(`正在生成 entry 文件 ${entryComponentName}`)
         await generateFile(entryComponentName, entryTemplate)
         successLog('生成成功')
        } catch (e) {
         errorLog(e.message)
        }
       } else {
        const inputArr = inputName.split('/')
        const directory = inputArr[0]
        let componentName = inputArr[inputArr.length - 1]
      
        // 頁(yè)面組件目錄
        const componentDirectory = resolve('../src/components', directory)
      
        // vue組件
        const componentVueName = resolve(componentDirectory, `${componentName}.vue`)
      
        const hasComponentDirectory = fs.existsSync(componentDirectory)
        if (hasComponentDirectory) {
         log(`${componentDirectory}組件目錄已存在,直接生成vue文件`)
        } else {
         log(`正在生成 component 目錄 ${componentDirectory}`)
         await dotExistDirectoryCreate(componentDirectory)
        }
      
        try {
         log(`正在生成 vue 文件 ${componentName}`)
         await generateFile(componentVueName, vueTemplate(componentName))
         successLog('生成成功')
        } catch (e) {
         errorLog(e.message)
        }
       }
      
       process.stdin.emit('end')
      })
      
      process.stdin.on('end', () => {
       log('exit')
       process.exit()
      })
      
      function dotExistDirectoryCreate (directory) {
       return new Promise((resolve) => {
        mkdirs(directory, function () {
         resolve(true)
        })
       })
      }
      
      // 遞歸創(chuàng)建目錄
      function mkdirs (directory, callback) {
       var exists = fs.existsSync(directory)
       if (exists) {
        callback()
       } else {
        mkdirs(path.dirname(directory), function () {
         fs.mkdirSync(directory)
         callback()
        })
       }
      }

      配置package.json,scripts新增兩行命令,其中-com是為了區(qū)別是創(chuàng)建頁(yè)面組件還是公共組件

      "scripts": {
        "new:view":"node scripts/generateComponent",
        "new:com": "node scripts/generateComponent -com"
       },

      執(zhí)行

        npm run new:view // 生成頁(yè)組件
        npm run new:com // 生成基礎(chǔ)組件
        或者
        yarn run new:view // 生成頁(yè)組件
        yarn run new:com // 生成基礎(chǔ)組件

      如何通過(guò)npm或yarn自動(dòng)生成vue組件

      以上是“如何通過(guò)npm或yarn自動(dòng)生成vue組件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      本文題目:如何通過(guò)npm或yarn自動(dòng)生成vue組件-創(chuàng)新互聯(lián)
      瀏覽路徑:http://ef60e0e.cn/article/dogigs.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        漠河县| 柞水县| 商丘市| 盐池县| 珠海市| 华安县| 福鼎市| 黑山县| 关岭| 长垣县| 罗源县| 琼结县| 当阳市| 成安县| 海原县| 巴南区| 辽阳县| 遂宁市| 西乌| 承德县| 土默特右旗| 罗平县| 杭锦后旗| 边坝县| 张家川| 台东县| 通州区| 禹城市| 蕲春县| 阿尔山市| 黄山市| 娱乐| 潢川县| 安宁市| 灌阳县| 浪卡子县| 通辽市| 锡林郭勒盟| 武威市| 寻甸| 梁山县|