当前位置: 首页 > 后端技术 > Node.js

搭建自己的脚手架——“优雅”一代前端项目

时间:2023-04-03 21:09:35 Node.js

平时工作中做移动H5比较多,所以通过webpack搭建了自己的前端项目(x-build),主要编译stylus,jade,es6,自适应解决方案,还有自己写的一些插件。做新项目的时候,每次复制文件夹,然后修改package.json、README.md等,感觉很“优雅”。我想用vue-cli,用vueinit在github上下载自己的前端工程,看起来很“优雅”。如果你觉得没问题,请star>>>x-build-cli。初始化项目结构首先,你已经有一个自己搭建的前端项目,假设命名为x-build,并且已经上传到github。这个时候新建一个工程,命名为x-build-cli。我参考了vue的做法,这样即使x-build更新了,x-build-cli也不更新,可以拉取最新的x-build。mkdirx-build-clicdx-build-clinpminit创建一个名为x-build-cli的文件夹,使用npm进行初始化,在文件夹中创建一个bin目录,并创建x-build.js,此时的项目结构:x-build-cli|-bin||-x-build.js|-package.jsonconfigurepackage.json"bin":{"x-build":"./bin/x-build.js"}inpackage"bin"添加到.json,“x-build”是命令号中要输入的指令,“./bin/x-build.js”是命令执行时的文件。配置x-build.js#!/usr/bin/envnodeconstprogram=require('commander');constdownload=require('download-git-repo');constchalk=require('chalk');constora=要求('ora');#!/usr/bin/envnode指定此文件应由节点执行。需要安装的模块npmicommanderdownload-git-repochalkora--save:Commander可以解析用户输入的命令。download-git-repo从github上拉取文件。chalk更改输出文本或小图标的颜色(加载、成功、警告等)program.version('0.1.0').option('-i,init[name]','initializex-buildproject').parse(process.argv);.option()-i是简写,类似于npmi-ginit后面的[name],可以通过program.init获取。最后一项是描述,一般在x-build-h中提示if(program.init){constspinner=ora('downloadingx-buildfromgithub').start();download('codexu/x-build#x-build4.1',program.init,function(err){if(!err){//可以输出一些项目成功信息console.info(chalk.blueBright('下载成功'));}else{//可以输出一些项目失败的信息}})}ora().start()可以创建一个小的加载图标。>>>其他图标参考oradownload()从github上下载我们需要的工程。因为它使用的是分支,所以在它后面加上#x-build4.1,默认是master。参数配置参考download-git-repochalk.blueBright()会将输出文本转换为蓝色。>>>其他颜色参考npm上上传的粉笔。没有账号的同学去npm注册账号。//登录账号npmlogin//上传项目npmpublish上传成功后,通过npminstallx-build-cli-g安装到全局环境中。使用buildinit[projectname]从github上拉取相应的文件。优化此时下载的文件与github保持一致。我想改一下package.json,名字改成初始化的项目名,版本改成1.0.0。此时可以使用node自带的API:constfs=require('fs');fs.readFile(`${process.cwd()}/${program.init}/package.json`,(err,data)=>{if(err)throwerr;let_data=JSON.parse(data.toString())_data.name=program.init_data.version='1.0.0'letstr=JSON.stringify(_data,null,4);fs.writeFile(`${process.cwd()}/${program.init}/package.json`,str,function(err){if(err)throwerr;})});通过readFile读取文件,writeFile写入文件,写入时注意传入字符串JSON.stringify(_data,null,4),这样就可以输出格式化的json文件。它可以通过节点轻松完成。这里有很大的发展空间,就不多说了。结语有不清楚的朋友请在Issue中留言,希望大家在我的github上点个珍贵的star。其他文章推荐x-loader.js图片加载加载控件ES6插件rem自适应解决方案px2rem-loader&hotcss