Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
bamboo-basket
Advanced tools
快速创建一个模板仓库
package.json
添加 动态版本依赖
latest
、next
、pre
动态获取版本或指定某一版本# npm
npm i bamboo-basket
# yarn
yarn add bamboo-basket
# pnpm
pnpm add bamboo-basket
import path from 'node:path'
import bambooBasket, { colors, execa, getDirname, logger } from 'bamboo-basket'
bambooBasket({
// 配置 template 所在目录的父级
root: path.resolve(getDirname(), './'),
// 相对于 root 的目录 单模板时配置这个即可
templateDir: 'template',
// 如果使用 多模板,由用户选择模板
templateList: [
{ name: 'template1', dir: 'template1', description: '描述信息' }
],
// 配置 命令行参数解析规则
argv: {
// --name,-n
// 命令行 --name=project 或 -n=project 会被解析为 { name: 'project' }
name: { alias: 'n', type: 'string' }
}
}, async ({ addPrompts, template, pkg, argv, answer, templateName }) => {
// 通过 argv 可以获取命令行参数对象
console.log(argv) // { name: 'project' }
// templateName 当前模板名称
// 可以用 templateName 字段判断当前使用的是哪个模板,根据不同模板进行不同的配置
// colors 是一个颜色库 picocolors
// 用于 格式化 输出内容的样式
// 通过 addPrompts 新增 交互终端对话,获取配置
const { author } = await addPrompts({
name: 'author',
type: 'text',
})
// 你也可以直接 通过 answer.author 获取 值
console.log(author, answer.author)
// template 是模板实例
// 可以通过 template.addExclude(glob) 方法,根据需求,排除掉模板目录中不需要的文件
template.addExclude('exclude.js')
// 通过 template.setData(data) 设置 handlebars 模板数据
template.setData({ author: answer.author })
// pkg 是 当前使用的模板的 package.json 实例
// 由于 package.json 文件是在 模板生成到 目标目录后,才可能被创建
// (模板可能没有包含 package.json 那么 pkg 是一个空实例,不会产生其他影响,不生成文件)
// 所以更新字段的方式,需要通过回调的方式实现
pkg.setPackage((pkgJson) => {
pkgJson.name = 'my-project'
})
// 通过 pkg.addDependence(dependenceName, version)
// 或 pkg.addDevDependence(dependenceName, version) 动态添加依赖
// 你可以通过指定 version 值 为 latest / next / prev 等依赖设置的 dist-tags,来获取最新的版本号
pkg.addDevDependence('foo', '^1.0.0')
// 返回一个回调函数, 当通过模板生成到目标目录成功后,执行回调
return ({ spinner }) => {
// 可以继续在这里执行一些必要的命令
// 比如 用 execa 执行 `git init` 或 `npm install` 操作等
}
})
支持通过 cli 命令执行模板生成
npx basket [target-dir]
命令读取项目根目录下的 basket.config.{ts,js}
文件,获取配置信息,
然后执行模板生成
basket.config.ts
import { defineConfig } from 'bamboo-basket'
export default defineConfig({
root: __dirname,
template: 'template',
}, async ({ addPrompts }) => {
await addPrompts({
name: 'projectName',
type: 'text',
message: 'Input Your Project Name:'
})
})
也可以通过 命令行参数 --config,-c
指定配置文件路径
npx basket ./my-project -c ./scripts/basket.config.ts
请查看 examples
npm init
的模板仓库dist-tags
获取对应版本npm init xxx-app
说明文档在我日常的开发任务中,经常需要重复创建一系列文件,或者想把某个项目抽象为一个模板,发布到 npm或者私有npm上,通过
npm init xxx-app ./my-project
创建项目。
而这个过程在大多数情况下需要编写很多重复的代码,再包括一部分模板个性化的配置。
所以我将这个过程抽象为一个独立的库,通过这个库,可以很方便的定义一个模板,以及通过这个库快速生成。
FAQs
create template helper
The npm package bamboo-basket receives a total of 0 weekly downloads. As such, bamboo-basket popularity was classified as not popular.
We found that bamboo-basket demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.