You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建含默认NPM模块与配置的Git仓库,实现统一配置管理

搞定统一NPM配置+快速新项目生成的方案

哈哈,这个需求我太熟了!我之前也折腾过类似的场景——想把TS、Prettier、TSLint这些配置统一管理,又能快速生成新项目,不用每次都复制粘贴一堆配置文件。你之前踩的坑我也踩过:把配置塞到自定义模块里,结果新项目根本读不到模块目录外的配置,完全达不到预期。下面给你几个亲测有效的解决方案,分分钟解决你的问题!

一、先把公共配置做成可继承的NPM模块

核心思路是:把你的默认配置(tsconfig、prettier、tslint)单独打包成NPM模块,让新项目的配置文件通过extends字段引用它。这样既保证新项目根目录有自己的配置文件,又能从一处统一更新所有项目的核心配置。

1. 打造你的公共配置模块(以TS配置为例)

  • 新建个仓库,比如叫my-shared-ts-config,结构超简单:
my-shared-ts-config/
├── package.json
└── tsconfig.json  # 这里放你所有的默认TS配置,比如target、module这些
  • 给package.json加几个关键字段,确保能被正确识别:
{
  "name": "my-shared-ts-config",
  "version": "1.0.0",
  "main": "tsconfig.json",
  "private": true  # 如果是私有仓库就加这个,避免误发布到公网
}
  • 把这个模块发布到你们的私有NPM仓库,或者直接用Git地址作为依赖(比如"my-shared-ts-config": "git+https://your-git-repo-url.git")。

2. 新项目里轻松引用公共配置

新项目的tsconfig.json不用写一堆重复配置了,只需要继承公共模块,再加项目特有的配置就行:

{
  "extends": "my-shared-ts-config",
  "compilerOptions": {
    // 比如项目专属的输出目录、根目录
    "outDir": "./dist",
    "rootDir": "./src"
  },
  "include": ["src/**/*"]
}

Prettier和TSLint也支持这种玩法:

  • Prettier:.prettierrc直接写 "extends": "my-shared-prettier-config"
  • TSLint:tslint.json里加 "extends": "my-shared-tslint-config"

这样一来,所有新项目的配置文件都在根目录,工具能正常识别;而且核心配置都来自你的公共模块,后续改配置只需要更新公共模块的版本,所有项目跑个npm update就能同步最新配置!

二、一键生成带默认配置的新项目

光有公共配置还不够,得能快速生成新项目,不然每次手动建文件、加依赖也麻烦。给你两种简单的方式:

方式1:用npm init自定义模板(推荐!官方玩法)

  1. 建个项目模板仓库,比如my-npm-starter,结构如下:
my-npm-starter/
├── package.json  # 里面包含默认依赖:typescript、prettier、还有你的公共配置模块
├── tsconfig.json  # 就是上面说的继承公共配置的文件
├── tslint.json
├── .prettierrc
├── src/
│   └── index.ts  # 甚至可以加个默认的入口文件
└── .gitignore
  1. 把这个仓库发布成create-my-npm-starter(npm init要求模板包名必须是create-xxx或者@scope/create-xxx),然后在package.json里加个bin脚本:
{
  "name": "create-my-npm-starter",
  "version": "1.0.0",
  "bin": "./create-project.js",
  "dependencies": {
    "fs-extra": "^11.0.0"  # 用来复制文件的工具
  }
}
  1. 写个简单的create-project.js脚本,负责把模板文件复制到新项目目录:
#!/usr/bin/env node
const fs = require('fs-extra');
const path = require('path');

const projectName = process.argv[2] || path.basename(process.cwd());
const targetDir = path.join(process.cwd(), projectName);
const templateDir = path.join(__dirname, 'template'); // 把模板文件都放template文件夹里更整洁

// 复制模板文件
fs.copySync(templateDir, targetDir);

// 修改package.json的项目名称
const pkgPath = path.join(targetDir, 'package.json');
const pkg = require(pkgPath);
pkg.name = projectName;
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));

console.log(`🎉 新项目 ${projectName} 创建完成!`);
console.log(`👉 请执行:cd ${projectName} && npm install`);
  1. 发布之后,创建新项目只需要跑:
npm init my-npm-starter my-new-project

一键搞定所有配置和初始文件!

方式2:Git模板仓库+简单脚本(不想发NPM包的话用这个)

如果不想折腾NPM包,直接用Git仓库当模板也很方便:

  1. 把你的模板仓库推到GitHub/GitLab,比如https://github.com/your-name/my-npm-template.git
  2. 写个bash脚本create-project.sh:
#!/bin/bash
read -p "请输入项目名称:" PROJECT_NAME

# 克隆模板仓库
git clone https://github.com/your-name/my-npm-template.git $PROJECT_NAME
cd $PROJECT_NAME

# 删掉模板的Git记录,初始化新的仓库
rm -rf .git
git init

# 修改package.json里的项目名称
sed -i '' "s/\"name\": \"my-npm-template\"/\"name\": \"$PROJECT_NAME\"/" package.json

echo "✅ 项目创建完成!"
echo "📦 请执行:npm install"
  1. 给脚本加执行权限:chmod +x create-project.sh
  2. 以后创建新项目就跑:
./create-project.sh

输入项目名就行,超简单!

三、统一更新所有项目的配置

当你需要修改默认配置时,步骤超简单:

  1. 更新你的公共配置模块(比如my-shared-ts-config)的配置,然后发布新版本
  2. 在每个新项目里跑:
npm update my-shared-ts-config my-shared-prettier-config my-shared-tslint-config

就能同步最新配置。如果项目多,可以用npm-check-updates工具批量更新,或者写个脚本遍历所有项目目录自动执行更新命令。


内容的提问来源于stack exchange,提问作者cJayy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:24:39