以下是一个简单的脚手架项目初始化脚本示例,使用了Node.js和Vite来创建一个带有TypeScript支持的新项目骨架。
const fs = require('fs-extra');
const path = require('path');
const execa = require('execa');
// 创建项目目录结构
function createDirectoryStructure(root) {
fs.mkdirpSync(path.join(root, 'src'));
fs.mkdirpSync(path.join(root, 'public'));
}
// 初始化package.json
function initPackageJson(root, projectName) {
const pkg = {
name: projectName,
version: '0.1.0',
scripts: {
dev: 'vite',
},
dependencies: {
react: '^17.0.1',
'react-dom': '^17.0.1',
},
devDependencies: {
vite: '^2.0.0',
typescript: '^4.1.3',
},
};
fs.writeFileSync(path.join(root, 'package.json'), JSON.stringify(pkg, null, 2));
}
// 创建TypeScript配置文件
function createTsConfig(root) {
const tsConfig = {
compilerOptions: {
target: 'esnext',
module: 'esnext',
jsx: 'react',
moduleResolution: 'node',
lib: ['esnext', 'dom'],
outDir: 'dist',
skipLibCheck: true,
},
include: ['src/**/*.tsx', 'src/**/*.ts'],
};
fs.writeFileSync(path.join(root, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2));
}
// 创建Vite配置文件
function createViteConfig(root) {
const viteConfig = `
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
});
`;
fs.writeFileSync(path.join(root, 'vite.config.ts'), viteConfig);
}
// 初始化git仓库
function initGitRepo(root) {
process.chdir(root);
execa('git', ['init']);
execa('git', ['add', '.']);
execa('git', ['commit', '-m', 'Initial commit']);
}
// 主函数
function createProject(projectName) {
const root = path.join(process.cwd(), projectName);
createDirectoryStructure(root);
initPackageJson(root, projectName);
createTsConfig(root);
createViteConfig(root);
initGitRepo(root);
}
// 使用脚手架创建项目
createProject('my-vite-project');
这段代码首先定义了创建目录结构、初始化package.json
、创建TypeScript和Vite配置文件以及初始化Git仓库的函数。最后通过createProject
函数来执行这些步骤,创建一个新的项目。
注意:在实际应用中,脚手架通常会更复杂,包括命令行界面(CLI)、交互式提示等功能,但这个示例提供了一个基本的项目初始化流程。