1.0.1 • Published 3 years ago
woyao-cli v1.0.1
使用说明
npm i woyao-cli -g
cd <工作目录>
mkdir <projectName>
cd <projectName>
woyao-cli <projectName> 或者 woyao-cli <projectName> -t <templateName> 或者 woyao-cli <projectName> -r <template-repo-name>
yarn install
yarn start
之后更新包:
npm update woyao_cli -g
发布npm包
创建一个npm账号(用户名,邮箱,密码)
初始化项目
mkdir <projectName> && cd <projectName>
npm init
npm adduse
npm publish
个人账号: chenwoyao- 其他:
- 每次发布需要版本号+1
- 在发布的时候确保自己的npm官方源:
npm config set registry https://registry.npmjs.org/
- 最后切回淘宝源:
npm config set registry https://registry.npm.taobao.org
- 我这边即使切换成淘宝源安装node-sass和sass-loader这两个包的时候也很慢。所以我直接用yarn了。 用cnpm管理工具安装的时候总会有警告信息打印出来,所以索性不用了。
- 如果登录过期了或者想切换用户,输入
npm login
重新登录
效果展示
思路流程图
使用到的工具
开始搭建脚手架的主要思路和关键代码
根据用户的终端输入,拿到全局配置信息
program
.version(packageJson.version) // 传入版本信息, node index.js --version/-V
.usage(`${chalk.green('<project-name>')} [options]`)
.option('-t --template <template-name>', '请选择模板名称')
.option('-r --templateRepoUrl <template-repo-url>', '远程模板仓库的链接')
.description('来自woyao用脚搭建的脚手架')
.action(function (path, cmd) {
// 输出校验
})
.on('--help', function () {
howToUse('<project-name>')
})
.parse(process.argv)
const projectName = program.args[0]
const templateRepoUrl = program.templateRepoUrl
拷贝远程模板仓库
function gitCloneRepository(templateRepoUrl) {
return new Promise(function (resolve, reject) {
log(`${chalk.green('开始拉取模板仓库')}`)
const command = 'git'
const args = [
'clone',
templateRepoUrl || `https://gitee.com/chenwoyao/woyao_templates.git`,
path.join(cliRoot, 'temp')
]
const child = spawn(command, args, { stdio: 'inherit' })
child.on('close', (code) => {
if (code !== 0) {
reject(`确保你有该远程模板仓库的权限或者你的远程仓库地址是否有误`)
return
}
console.log(`${chalk.green('模板仓库拉取成功')}`)
resolve()
})
})
}
选择模板
function choiceTemplate(dirs) {
return inquirer.prompt([{
name: 'template',
message: '请选择你要使用的模板',
type: 'list',
choices: dirs,
}])
.then(answer => {
return answer
})
}
将模板嵌入待建项目中
function copyTemplate(templateName, appRoot) {
return new Promise((resolve, reject) => {
console.log(`\n${chalk.greenBright('拷贝模板...')}`)
const templatePath = path.join(
cliRoot,
'temp',
'templates',
templateName
)
if (fs.existsSync(templatePath)) {
fs.copySync(templatePath, appRoot)
util.createDirTree(appRoot, ['node_modules', '.vscode', '.git'])
console.log(`${chalk.greenBright('模板拷贝完成...')}\n`)
resolve()
} else {
reject(`未能找到模板: ${templateName}`)
return
}
})
}
.npm使用说明和配置
### 查看npm镜像
```
npm config get registry
```
### 设置npm的镜像
```
---官方镜像
npm config set registry https://registry.npmjs.org/
---淘宝镜像
npm config set registry=https://registry.npm.taobao.org
```
### 用户登录
```
npm login
```
### 发布个人项目到npm上
```
第一次发布时,需要创建用户:
之后的发布需要更新版本:
npm adduser
npm publish
```
### 可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。
```
npm update <package>
```
### 可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
```
npm cache clear
```
### 可以撤销发布自己发布过的某个版本代码。
```
npm unpublish <package>@<version>
```
### 删除整个版本
```
npm unpublish <package>
```