zoukankan      html  css  js  c++  java
  • screeps游戏的typescript开发环境搭建

    此教程介绍了如何为screeps搭建一个基本的typescript开发环境,配置使用rollup进行脚本自动化,完成typescript文件编译、目标js文件提交到screeps服务器,最后通过一个HelloWorld来进行测试。

    操作系统:windows

    文本编辑器:vscode

    1.安装

    1.1 安装Node.js和npm

    前往Node.js官网下载安装包,安装包中已经包含了npm。

    1.2 安装yarn

    新建一个文件夹作为项目路径,在命令行终端使用以下命令安装yarn。

    npm install yarn -g

    1.3 安装rollup以及依赖

    yarn add rollup --save-dev 
    yarn add typescript ts-loader rollup-plugin-typescript2 --save-dev
    yarn add awesome-typescript-loader --save

    首先,第一行安装了rollup工具,第二和第三行添加typescript依赖以进行ts文件编译,最后一行安装了screeps依赖,用于上传编译后的文件。

    为了在本地使用typescript为screeps编写脚本,还需要安装必要的typescript声明。

    npm install @types/lodash @types/screeps @types/node

    2.配置

    2.1 在rollup中使用screeps插件

    rollup有现成的screeps脚本提交模块,比如rollup-plugin-screeps,但是因为这个插件是作者18年提交的,好像和当前版本的rollup有些不兼容,按照文档进行提交时会有如下警告,总是提交不上去,一直停在这不动。

    按照提示,我们打开node_module中的rollup-plugin-screepsdist路径下的index.js和rollup-screeps-plugin.js文件,找到其中的ongenerate钩子改为generateBundle,同样把onWrite改为WriteBundle。

    这时运行依然会报错,因为该插件在回调中调用了uploadSource函数,而该函数中用到的option.file在现在的rollup版本中已经找不到了,因此会报type error,我们要做的很简单,把option.file直接改为main.js的相对路径,比如"./dist/main.js"。但是这样日后修改起来总是麻烦,因此可以借用config配置文件来传参,从下图可以看出当我们传入config为配置文件路径时,这里就会调用loadConfigFile将配置文件信息读进来,我们可以在配置文件里添加一个uploadfile属性,并在这里用上。

    插件源代码

     

    修改

     screeps.json的配置可以参考2.4中所示

    该插件从当前路径的screeps.json中读取账户信息,并向服务器提交配置的文件,因为rollup可将tsc编译的多个js文件打包成一个main,所以我们不需要为每个module再独立配置。

    2.2 rollup.config.js配置

    为了使用rollup,我们需要新建一个rollup.config.js文件,通过这个文件来为rollup设置任务。

    "use strict";
     
    import typescript from "rollup-plugin-typescript2";
    import screeps from "rollup-plugin-screeps";




    export default {
        input: "src/main.ts",



        plugins: [
            typescript({tsconfig: "./tsconfig.json"}),
            screeps({configFile: "./screeps.json"})
        ],



        treeshake: false,



        output: {
            file: "./dist/main.js",
            format: "cjs",
            sourcemap: false
        },



    }

    2.3 tsconfig.json配置

    为了使用typescript,需要新建一个tsconfig.json文件为ts编译器添加配置。

    {
        "compilerOptions": {
          "allowJs": true,
          "target": "es2017",
          "moduleResolution": "Node",
          "newLine": "CRLF",
          "outDir": "tsc-out",
          "baseUrl": "src/",
          "sourceMap": false,
          "strict": true,
        },
        "include": [
          "src/**/*"
        ],
        "exclude": [
          "node_modules"
        ],
      }
      
      

    2.4 从文件导入账户信息

    在配置中我们没有直接将screeps的账户信息写入mycommit.js中,而是通过require("./screeps.json")来从名为screeps.json的文件中读取账户信息再进行使用,这样有一个好处是修改账户信息的时候直接修改screeps.json即可,不用到处去找。

    示例如下:

    
    
    [
        {
            "email": "EMAIL",
            "password": "PASSWORD",
            "hostname": "screeps.com",
            "port": 443,
            "path": "'/api/user/code'",
            "branch": "BRANCH",
         "uploadfile": "./dist/main.js"
        }
    ]
     

    我们可以照例子添加多个配置。

    3.测试

    3.1 HelloWorld测试

    在项目路径下新建src路径,在src中添加两个文件:main.ts、sayHello.ts,分别为他们添加以下代码

    //main.ts
    import sayHello from './sayHello';
    
    module.exports.loop = function(): void{
        sayHello("world");
    }
    //sayHello.ts
    export default function(name : String) {
        console.log("Hello " + name + "!");
    }

    终端在项目路径执行

    rollup -c

    rollup将会对ts文件编译,接着上传到对应的branch中,

    3.2 可能遇到的问题

  • 相关阅读:
    AWS研究热点:BMXNet – 基于MXNet的开源二进神经网络实现
    python数字图像处理(19):骨架提取与分水岭算法
    深度学习基石:一篇文章理解反向传播
    Densely semantically aligned person re-identification
    NPU TPU
    滤波、形态学腐蚀与卷积(合集)
    当神经网络撞上薛定谔:混合密度网络入门
    ubuntu 上配置端口转发
    插值法
    Linux终端复用神器-Tmux使用梳理
  • 原文地址:https://www.cnblogs.com/guoyicai/p/12631083.html
Copyright © 2011-2022 走看看