diff --git a/README.MD b/README.MD
index 76f1508..205fc45 100644
--- a/README.MD
+++ b/README.MD
@@ -35,6 +35,7 @@ Commands:
 
 * [x] 增删查模板列表
 * [x] 克隆项目到本地
+* [x] 克隆时ejs模板变量渲染
 * [x] 代码整理
 * [x] 同步功能
 
diff --git a/dist/pp.cjs.js b/dist/pp.cjs.js
index f316ec6..426923d 100644
--- a/dist/pp.cjs.js
+++ b/dist/pp.cjs.js
@@ -150,6 +150,15 @@ var Data = (function () {
         var data = this.getData();
         return data[name];
     };
+    Data.prototype.modifyUrl = function (name, opts) {
+        var data = this.findOne(name);
+        Object.keys(opts).forEach(function (v) {
+            if (opts[v] != undefined) {
+                data[v] = opts[v];
+            }
+        });
+        this.sync();
+    };
     Data.prototype.addUrl = function (opts) {
         var data = this.getData();
         if (!data[opts.name]) {
@@ -229,6 +238,7 @@ function isExist(file) {
     }
     return result;
 }
+var exclude = ['.png', '.jpg', '.jpeg', '.zip', '.rar', '.webp'];
 function writefile(fromDir, toDir, opts, force) {
     if (opts === void 0) { opts = {}; }
     if (force === void 0) { force = false; }
@@ -254,8 +264,14 @@ function writefile(fromDir, toDir, opts, force) {
             encoding: "utf8",
         });
         try {
-            var html = ejs__default["default"].render(originRoot, opts);
-            fs__default["default"].writeFileSync(toRes, html);
+            var ext = path__default["default"].parse(fromRes).ext;
+            if (exclude.includes(ext)) {
+                fs__default["default"].copyFileSync(fromRes, toRes);
+            }
+            else {
+                var html = ejs__default["default"].render(originRoot, opts);
+                fs__default["default"].writeFileSync(toRes, html);
+            }
         }
         catch (e) {
             errorFile.push(toRes);
@@ -542,7 +558,21 @@ function onCopy(templateDir, opts) {
         console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹"));
         return;
     }
-    writefile(templateDir, opts.targetDir);
+    var vars = {};
+    if (opts.p) {
+        try {
+            opts.p.split(',').forEach(function (v) {
+                var temp = v.split(":");
+                if (temp[0] != undefined && temp[1] != undefined) {
+                    vars[temp[0]] = temp[1];
+                }
+            });
+        }
+        catch (e) {
+            console.log(chalk__default["default"].red("您存储的变量解析出错了,请先检查"));
+        }
+    }
+    writefile(templateDir, opts.targetDir, vars);
 }
 function onClone(name, target) {
     var item = Data.getInstance().findOne(name);
@@ -557,6 +587,20 @@ function onClone(name, target) {
         console.log(chalk__default["default"].red("安全起见,不覆写已存在的目录,请先删除相同目录文件夹"));
         return;
     }
+    var opts = {};
+    if (item.p) {
+        try {
+            item.p.split(',').forEach(function (v) {
+                var temp = v.split(":");
+                if (temp[0] != undefined && temp[1] != undefined) {
+                    opts[temp[0]] = temp[1];
+                }
+            });
+        }
+        catch (e) {
+            console.log(chalk__default["default"].red("您存储的变量解析出错了,请先检查"));
+        }
+    }
     download__default["default"](git_url, tempPath, { clone: true }, function (err) {
         if (err)
             throw err;
@@ -577,6 +621,16 @@ function onRemove(name) {
         console.error(chalk__default["default"].red("不存在该模板"));
     }
 }
+function onModify(name, opt) {
+    var http = /^(http|https)\:\/\//g;
+    var git = /(git|root)\@/g;
+    if (opt.url && !git.test(opt.url) && !http.test(opt.url)) {
+        console.error(chalk__default["default"].red("请添加正确的Git仓库地址"));
+        return;
+    }
+    Data.getInstance().modifyUrl(name, opt);
+    console.log(chalk__default["default"].green("修改成功"));
+}
 function onAdd(url, name, opt) {
     var http = /^(http|https)\:\/\//g;
     var git = /(git|root)\@/g;
@@ -605,13 +659,25 @@ program
     .command("add <url> <name>")
     .option("-d --desc <desc>", "模板具体描述")
     .option("-t --tag <tag>", "模板标签")
+    .option("-v --var <var>", "模板变量")
     .description("添加一个模板仓库")
     .action(onAdd);
 program
+    .command("m <name>")
+    .option("-d --desc <desc>", "模板具体描述")
+    .option("-t --tag <tag>", "模板标签")
+    .option("-u --url <url>", "仓库地址")
+    .option("-p --p <p>", "模板变量")
+    .description("修改模板仓库")
+    .action(onModify);
+program
     .command("remove <name>")
     .description("删除一个模板仓库")
     .action(onRemove);
 program.command("clone <name> <target>").description("克隆模板仓库").action(onClone);
-program.command("copy <templateDir>").requiredOption("-d --targetDir <targetDir>", "目标路径").description("简单文件夹克隆").action(onCopy);
+program.command("copy <templateDir>")
+    .requiredOption("-d --targetDir <targetDir>", "目标路径")
+    .option("-p --p <p>", "模板变量")
+    .description("简单文件夹克隆").action(onCopy);
 program.parse(process.argv);
 //# sourceMappingURL=pp.cjs.js.map
diff --git a/dist/pp.cjs.js.map b/dist/pp.cjs.js.map
index 8bfd527..17da7eb 100644
--- a/dist/pp.cjs.js.map
+++ b/dist/pp.cjs.js.map
@@ -1 +1 @@
-{"version":3,"file":"pp.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\ No newline at end of file
+{"version":3,"file":"pp.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\ No newline at end of file
diff --git a/package.json b/package.json
index f264fe2..2cdd816 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@noderun/pp",
-  "version": "0.0.3",
+  "version": "0.0.4",
   "description": "命令行管理模板项目",
   "main": "dist/pp.umd.js",
   "module": "dist/pp.esm.js",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index eb81f65..391da45 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,12 +35,16 @@ specifiers:
   uuid: ^8.3.2
 
 dependencies:
+  chalk: registry.nlark.com/chalk/4.1.2
   commander: registry.npmmirror.com/commander/8.3.0
   download-git-repo: 3.0.2
   ejs: 3.1.6
+  fs-extra: registry.nlark.com/fs-extra/9.1.0
   ini: 2.0.0
   node-fetch: registry.npmmirror.com/node-fetch/2.6.6
+  ora: registry.nlark.com/ora/5.4.1
   qs: 6.10.1
+  tslib: registry.nlark.com/tslib/2.3.1
   uuid: 8.3.2
 
 devDependencies:
@@ -56,18 +60,14 @@ devDependencies:
   '@types/node-fetch': registry.nlark.com/@types/node-fetch/2.5.12
   '@types/qs': 6.9.7
   '@types/uuid': 8.3.1
-  chalk: registry.nlark.com/chalk/4.1.2
   cross-env: registry.nlark.com/cross-env/7.0.3
   dts-bundle: registry.npmmirror.com/dts-bundle/0.7.3
   execa: registry.nlark.com/execa/4.1.0
-  fs-extra: registry.nlark.com/fs-extra/9.1.0
   inquirer: registry.npmmirror.com/inquirer/8.2.0
   lodash: registry.nlark.com/lodash/4.17.21
-  ora: registry.nlark.com/ora/5.4.1
   rollup: registry.npmmirror.com/rollup/2.59.0
   rollup-plugin-sourcemaps: registry.npmmirror.com/rollup-plugin-sourcemaps/0.6.3_0f119b75fee2067b54923714521665fe
   rollup-plugin-typescript2: registry.nlark.com/rollup-plugin-typescript2/0.27.3_rollup@2.59.0+typescript@4.4.4
-  tslib: registry.nlark.com/tslib/2.3.1
   typescript: registry.npmmirror.com/typescript/4.4.4
 
 packages:
@@ -185,7 +185,6 @@ packages:
     engines: {node: '>=7.0.0'}
     dependencies:
       color-name: 1.1.4
-    dev: true
 
   /color-name/1.1.3:
     resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
@@ -193,7 +192,6 @@ packages:
 
   /color-name/1.1.4:
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-    dev: true
 
   /commander/2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
@@ -492,7 +490,6 @@ packages:
   /has-flag/4.0.0:
     resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
     engines: {node: '>=8'}
-    dev: true
 
   /has-symbol-support-x/1.4.2:
     resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==}
@@ -1004,7 +1001,6 @@ packages:
     name: ansi-regex
     version: 5.0.1
     engines: {node: '>=8'}
-    dev: true
 
   registry.nlark.com/ansi-styles/4.3.0:
     resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz}
@@ -1013,7 +1009,6 @@ packages:
     engines: {node: '>=8'}
     dependencies:
       color-convert: 2.0.1
-    dev: true
 
   registry.nlark.com/asynckit/0.4.0:
     resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/asynckit/download/asynckit-0.4.0.tgz}
@@ -1026,7 +1021,7 @@ packages:
     name: at-least-node
     version: 1.0.0
     engines: {node: '>= 4.0.0'}
-    dev: true
+    dev: false
 
   registry.nlark.com/atob/2.1.2:
     resolution: {integrity: sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/atob/download/atob-2.1.2.tgz}
@@ -1058,7 +1053,6 @@ packages:
       buffer: registry.nlark.com/buffer/5.7.1
       inherits: registry.nlark.com/inherits/2.0.4
       readable-stream: registry.nlark.com/readable-stream/3.6.0
-    dev: true
 
   registry.nlark.com/buffer/5.7.1:
     resolution: {integrity: sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz}
@@ -1094,7 +1088,6 @@ packages:
     dependencies:
       ansi-styles: registry.nlark.com/ansi-styles/4.3.0
       supports-color: registry.nlark.com/supports-color/7.2.0
-    dev: true
 
   registry.nlark.com/cli-cursor/3.1.0:
     resolution: {integrity: sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-cursor/download/cli-cursor-3.1.0.tgz}
@@ -1103,7 +1096,6 @@ packages:
     engines: {node: '>=8'}
     dependencies:
       restore-cursor: registry.nlark.com/restore-cursor/3.1.0
-    dev: true
 
   registry.nlark.com/cli-width/3.0.0:
     resolution: {integrity: sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-width/download/cli-width-3.0.0.tgz}
@@ -1117,7 +1109,6 @@ packages:
     name: clone
     version: 1.0.4
     engines: {node: '>=0.8'}
-    dev: true
 
   registry.nlark.com/combined-stream/1.0.8:
     resolution: {integrity: sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/combined-stream/download/combined-stream-1.0.8.tgz}
@@ -1175,7 +1166,6 @@ packages:
     version: 1.0.3
     dependencies:
       clone: registry.nlark.com/clone/1.0.4
-    dev: true
 
   registry.nlark.com/delayed-stream/1.0.0:
     resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/delayed-stream/download/delayed-stream-1.0.0.tgz}
@@ -1302,7 +1292,7 @@ packages:
       graceful-fs: registry.npmmirror.com/graceful-fs/4.2.8
       jsonfile: registry.nlark.com/jsonfile/6.1.0
       universalify: registry.nlark.com/universalify/2.0.0
-    dev: true
+    dev: false
 
   registry.nlark.com/fs.realpath/1.0.0:
     resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz}
@@ -1373,7 +1363,6 @@ packages:
     name: is-interactive
     version: 1.0.0
     engines: {node: '>=8'}
-    dev: true
 
   registry.nlark.com/is-module/1.0.0:
     resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-module/download/is-module-1.0.0.tgz}
@@ -1401,7 +1390,6 @@ packages:
     name: is-unicode-supported
     version: 0.1.0
     engines: {node: '>=10'}
-    dev: true
 
   registry.nlark.com/isexe/2.0.0:
     resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/isexe/download/isexe-2.0.0.tgz}
@@ -1425,7 +1413,7 @@ packages:
       universalify: registry.nlark.com/universalify/2.0.0
     optionalDependencies:
       graceful-fs: registry.npmmirror.com/graceful-fs/4.2.8
-    dev: true
+    dev: false
 
   registry.nlark.com/locate-path/5.0.0:
     resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/locate-path/download/locate-path-5.0.0.tgz}
@@ -1450,7 +1438,6 @@ packages:
     dependencies:
       chalk: registry.nlark.com/chalk/4.1.2
       is-unicode-supported: registry.nlark.com/is-unicode-supported/0.1.0
-    dev: true
 
   registry.nlark.com/magic-string/0.25.7:
     resolution: {integrity: sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/magic-string/download/magic-string-0.25.7.tgz}
@@ -1480,7 +1467,6 @@ packages:
     name: mimic-fn
     version: 2.1.0
     engines: {node: '>=6'}
-    dev: true
 
   registry.nlark.com/minimist/0.1.0:
     resolution: {integrity: sha1-md9lelJXTCHJBXSX33QnkLK0wN4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/minimist/download/minimist-0.1.0.tgz}
@@ -1515,7 +1501,6 @@ packages:
     engines: {node: '>=6'}
     dependencies:
       mimic-fn: registry.nlark.com/mimic-fn/2.1.0
-    dev: true
 
   registry.nlark.com/ora/5.4.1:
     resolution: {integrity: sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ora/download/ora-5.4.1.tgz}
@@ -1532,7 +1517,6 @@ packages:
       log-symbols: registry.nlark.com/log-symbols/4.1.0
       strip-ansi: registry.npmmirror.com/strip-ansi/6.0.1
       wcwidth: registry.nlark.com/wcwidth/1.0.1
-    dev: true
 
   registry.nlark.com/os-tmpdir/1.0.2:
     resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/os-tmpdir/download/os-tmpdir-1.0.2.tgz}
@@ -1625,7 +1609,6 @@ packages:
       inherits: registry.nlark.com/inherits/2.0.4
       string_decoder: registry.nlark.com/string_decoder/1.1.1
       util-deprecate: registry.nlark.com/util-deprecate/1.0.2
-    dev: true
 
   registry.nlark.com/resolve/1.17.0:
     resolution: {integrity: sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/resolve/download/resolve-1.17.0.tgz?cache=0&sync_timestamp=1631501917799&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fresolve%2Fdownload%2Fresolve-1.17.0.tgz}
@@ -1652,7 +1635,6 @@ packages:
     dependencies:
       onetime: registry.nlark.com/onetime/5.1.2
       signal-exit: registry.npmmirror.com/signal-exit/3.0.5
-    dev: true
 
   registry.nlark.com/rollup-plugin-typescript2/0.27.3_rollup@2.59.0+typescript@4.4.4:
     resolution: {integrity: sha1-zZRVrAJtMlsgxXKNLMVKCKdxtos=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/rollup-plugin-typescript2/download/rollup-plugin-typescript2-0.27.3.tgz}
@@ -1683,7 +1665,6 @@ packages:
     resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz}
     name: safe-buffer
     version: 5.1.2
-    dev: true
 
   registry.nlark.com/safer-buffer/2.1.2:
     resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz}
@@ -1742,7 +1723,6 @@ packages:
     version: 1.1.1
     dependencies:
       safe-buffer: registry.nlark.com/safe-buffer/5.1.2
-    dev: true
 
   registry.nlark.com/strip-final-newline/2.0.0:
     resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz}
@@ -1758,7 +1738,6 @@ packages:
     engines: {node: '>=8'}
     dependencies:
       has-flag: 4.0.0
-    dev: true
 
   registry.nlark.com/through/2.3.8:
     resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/through/download/through-2.3.8.tgz}
@@ -1791,7 +1770,7 @@ packages:
     resolution: {integrity: sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/tslib/download/tslib-2.3.1.tgz}
     name: tslib
     version: 2.3.1
-    dev: true
+    dev: false
 
   registry.nlark.com/universalify/0.1.2:
     resolution: {integrity: sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz}
@@ -1805,13 +1784,12 @@ packages:
     name: universalify
     version: 2.0.0
     engines: {node: '>= 10.0.0'}
-    dev: true
+    dev: false
 
   registry.nlark.com/util-deprecate/1.0.2:
     resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz}
     name: util-deprecate
     version: 1.0.2
-    dev: true
 
   registry.nlark.com/wcwidth/1.0.1:
     resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/wcwidth/download/wcwidth-1.0.1.tgz}
@@ -1819,7 +1797,6 @@ packages:
     version: 1.0.1
     dependencies:
       defaults: registry.nlark.com/defaults/1.0.3
-    dev: true
 
   registry.nlark.com/webidl-conversions/3.0.1:
     resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/webidl-conversions/download/webidl-conversions-3.0.1.tgz}
@@ -1948,7 +1925,6 @@ packages:
     name: cli-spinners
     version: 2.6.1
     engines: {node: '>=6'}
-    dev: true
 
   registry.npmmirror.com/commander/2.20.3:
     resolution: {integrity: sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1634887824095&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz}
@@ -2165,7 +2141,6 @@ packages:
     resolution: {integrity: sha1-nj6MwMdamUcrRDIQM6dwLnc4JS8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.5.tgz}
     name: signal-exit
     version: 3.0.5
-    dev: true
 
   registry.npmmirror.com/string-width/4.2.3:
     resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-width/download/string-width-4.2.3.tgz}
@@ -2185,7 +2160,6 @@ packages:
     engines: {node: '>=8'}
     dependencies:
       ansi-regex: registry.nlark.com/ansi-regex/5.0.1
-    dev: true
 
   registry.npmmirror.com/tr46/0.0.3:
     resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tr46/download/tr46-0.0.3.tgz}
diff --git a/src/data/data.ts b/src/data/data.ts
index 697ded7..f080b68 100644
--- a/src/data/data.ts
+++ b/src/data/data.ts
@@ -6,7 +6,7 @@ import config from "@/config";
 import {readIniFile, writeIniFile} from "@/util";
 
 const dataPath = config.listPath
-
+type a = keyof { url?: string, desc?:string, p?: string, tag?: string}
 /**
  * 读取配置
  */
@@ -47,6 +47,16 @@ export default class Data {
     return data[name]
   }
 
+  modifyUrl(name: string, opts: { url?: string, desc?:string, p?: string, tag?: string}){
+    let data = this.findOne(name);
+    (Object.keys(opts) as a[]).forEach((v:a)=>{
+      if(opts[v]!=undefined){
+        data[v] = opts[v]
+      }
+    })
+    this.sync()
+  }
+
   addUrl(opts: { url: string, name: string, desc?:string, force?: boolean}){
     let data = this.getData()
     if(!data[opts.name]){
diff --git a/src/func.ts b/src/func.ts
index dc4c80e..9354718 100644
--- a/src/func.ts
+++ b/src/func.ts
@@ -70,7 +70,7 @@ export function onList(opt?: { all?: boolean, tag:string }) {
   });
 }
 
-export function onCopy(templateDir: string, opts: { targetDir: string }){
+export function onCopy(templateDir: string, opts: { targetDir: string, p:string }){
   if(!isExist(templateDir)){
     console.log(
       chalk.red("请提供模板目录")
@@ -83,7 +83,23 @@ export function onCopy(templateDir: string, opts: { targetDir: string }){
     );
     return;
   }
-  writefile(templateDir, opts.targetDir);
+  let vars = {}
+  if(opts.p){
+    try{
+      opts.p.split(',').forEach((v:string)=>{
+        let temp = v.split(":")
+        if (temp[0]!=undefined&&temp[1]!=undefined){
+          // @ts-ignore
+          vars[temp[0]] = temp[1]
+        }
+      })
+    }catch (e) {
+      console.log(
+        chalk.red("您存储的变量解析出错了,请先检查")
+      );
+    }
+  }
+  writefile(templateDir, opts.targetDir, vars);
 }
 
 export function onClone(name: string, target: string) {
@@ -101,6 +117,22 @@ export function onClone(name: string, target: string) {
     );
     return;
   }
+  let opts = {}
+  if(item.p){
+    try{
+      item.p.split(',').forEach((v:string)=>{
+        let temp = v.split(":")
+        if (temp[0]!=undefined&&temp[1]!=undefined){
+          // @ts-ignore
+          opts[temp[0]] = temp[1]
+        }
+      })
+    }catch (e) {
+      console.log(
+        chalk.red("您存储的变量解析出错了,请先检查")
+      );
+    }
+  }
   download(git_url, tempPath, { clone: true }, function (err: Error) {
     if (err) throw err;
     console.log("临时文件夹为:" + tempPath);
@@ -121,7 +153,18 @@ export function onRemove(name: string) {
   }
 }
 
-export function onAdd(url: string, name: string, opt: { desc?: string,tag?:string }) {
+export function onModify(name: string, opt: { desc?: string, url?:string,tag?:string,p?:string }) {
+  const http = /^(http|https)\:\/\//g;
+  const git = /(git|root)\@/g;
+  if (opt.url&&!git.test(opt.url) && !http.test(opt.url)) {
+    console.error(chalk.red("请添加正确的Git仓库地址"));
+    return;
+  }
+  Data.getInstance().modifyUrl(name, opt);
+  console.log(chalk.green("修改成功"));
+}
+
+export function onAdd(url: string, name: string, opt: { desc?: string,tag?:string,var?:string }) {
   const http = /^(http|https)\:\/\//g;
   const git = /(git|root)\@/g;
   if (!git.test(url) && !http.test(url)) {
diff --git a/src/index.ts b/src/index.ts
index 90cff13..bfeb4bd 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -24,15 +24,26 @@ program
   .command("add <url> <name>")
   .option("-d --desc <desc>", "模板具体描述")
   .option("-t --tag <tag>", "模板标签")
+  .option("-v --var <var>", "模板变量")
   .description("添加一个模板仓库")
   .action(func.onAdd);
-
+program
+  .command("m <name>")
+  .option("-d --desc <desc>", "模板具体描述")
+  .option("-t --tag <tag>", "模板标签")
+  .option("-u --url <url>", "仓库地址")
+  .option("-p --p <p>", "模板变量")
+  .description("修改模板仓库")
+  .action(func.onModify);
 program
   .command("remove <name>")
   .description("删除一个模板仓库")
   .action(func.onRemove);
 
 program.command("clone <name> <target>").description("克隆模板仓库").action(func.onClone);
-program.command("copy <templateDir>").requiredOption("-d --targetDir <targetDir>", "目标路径").description("简单文件夹克隆").action(func.onCopy);
+program.command("copy <templateDir>")
+  .requiredOption("-d --targetDir <targetDir>", "目标路径")
+  .option("-p --p <p>", "模板变量")
+  .description("简单文件夹克隆").action(func.onCopy);
 
 program.parse(process.argv);
diff --git a/src/writefile.ts b/src/writefile.ts
index ba126c7..f2759e4 100644
--- a/src/writefile.ts
+++ b/src/writefile.ts
@@ -31,6 +31,8 @@ export function isExist (file: string) {
   return result
 }
 
+const exclude = ['.png','.jpg','.jpeg','.zip','.rar','.webp']
+
 export default function writefile (fromDir: string, toDir: string, opts = {}, force = false) {
   if (!fromDir) {
     console.log(chalk.red("缺少模板目录"))
@@ -54,8 +56,13 @@ export default function writefile (fromDir: string, toDir: string, opts = {}, fo
       encoding: "utf8",
     });
     try{
-      const html = ejs.render(originRoot, opts);
-      fs.writeFileSync(toRes, html);
+      let ext = path.parse(fromRes).ext
+      if(exclude.includes(ext)){
+        fs.copyFileSync(fromRes, toRes)
+      }else {
+        const html = ejs.render(originRoot, opts);
+        fs.writeFileSync(toRes, html);
+      }
     }catch (e) {
       errorFile.push(toRes)
       errors.push(e)