我有一个下载的模块仓库,我想在本地安装,而不是全局安装在另一个目录中?
有什么简单的方法可以做到这一点?
我目前正在为Bot Land编写一些脚本。Bot Land是一款实时策略游戏,您无需编写代码即可通过API控制机器人,而无需使用鼠标和键盘来控制自己的单位,然后您的机器人就可以与其他机器人进行对抗。如果您熟悉SC2中的单元,则可以创建类似于眨眼潜行者,攻城坦克,医护人员和超能力的机器人。(对于软件工程师来说,这是一个非常有趣的游戏,但这超出了此问题的范围。)
Bot控件具有三个级别,这些级别的复杂性不断提高:默认的AI,类似于Scratch的编程语言以及减少了的称为BotLandScript的JavaScript集。尽管BotLandScript的内置编辑器是合理的,但是您必须将所有代码作为一个文件上载,并在各处使用全局顶级功能。自然,如果您的代码开始变长并且不同的机器人共享相同的功能,那么一段时间后,这将变得很痛苦。
为了方便为多个机器人编写代码,减少使用裸露的JS编码时发生意外错误的机会,并增加击败其他玩家的机会,我设置了上述TypeScript项目,以提供一个公共库以及每个机器人的代码。当前目录结构大致类似于以下内容:
lib/
bot.land.d.ts
common.ts
BlinkStalker/
BlinkStalker.ts
tsconfig.json
Artillery/
Artillery.ts
tsconfig.json
SmartMelee/
SmartMelee.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
lib是bot之间共享的通用代码,并为(非TS)Bot Land API提供TypeScript定义。然后,每个机器人都有自己的文件夹,其中一个文件包含机器人代码,另一个文件包含样板tsconfig.json:
lib/
bot.land.d.ts
common.ts
BlinkStalker/
BlinkStalker.ts
tsconfig.json
Artillery/
Artillery.ts
tsconfig.json
SmartMelee/
SmartMelee.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
tsconfig.json构建每一个组件时,它都会创建一个对应的对象bot.js,其中包含来自bot本身的转译代码以及中的所有代码common.js。此设置由于以下几个原因而欠佳:需要大量重复的样板,使其很难添加新的bot,每个bot都包含很多不必要的代码,并且需要分别构建每个bot。
但是,根据我到目前为止的研究,似乎没有一种简单的方法可以完成我想要的事情。特别是,使用new tsc -b选项和引用不起作用,因为这需要对代码进行模块化,而Bot Land需要一个文件,且所有功能都在顶层定义。
达成以下尽可能多的最佳方法是什么?
tsconfig.json每个机器人不需要)import了常用的功能,以避免输出无用的代码,但随后...tasks.json用于构建每个子项目的样板。我含糊地猜测答案可能除了之外还涉及Grunt之类的东西tsc,但是我对此一无所知。
我有一个具有以下文件结构的 monorepo 设置:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 shared\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dist\n| \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n| \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 frontend\n| \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 firebase.json\nRun Code Online (Sandbox Code Playgroud)\n./shared持有在./backend和之间共享的 TypeScript 类./frontend。理想情况下,我想使用functions/package.json符号链接引用共享库,以避免每次更改共享代码(大部分功能都位于其中)后都必须重新安装。
但是,这不起作用(既不使用link:,也不使用绝对file:路径,也不使用相对file:路径)
// functions/package.json\n ...\n "dependencies": {\n "shared": "file:/home/boern/Desktop/wd/monorepo/shared"\n ...\n }\nRun Code Online (Sandbox Code Playgroud)\n导致错误firebase deploy --only functions( error Package "shared" refers to a non-existing file \'"home/boern/Desktop/wd/monorepo/shared"\')。库(尽管存在于 中./functions/node_modules/)未传输到服务器?
此外,"functions": {"ignore": …
javascript ×2
npm ×2
firebase ×1
node.js ×1
npm-install ×1
packages ×1
tsconfig ×1
typescript ×1
yarnpkg ×1