Есть ли способ добавить набор текста к внешнему javascript файлу в машинописи? - PullRequest
0 голосов
/ 25 марта 2020

для контекста; Я делаю сценарий на стороне клиента, и мне надоело ждать, пока веб-пакет объединит все мои зависимости каждый раз, когда я вносил изменения. Поэтому я добавил зависимости через тег <script> в свой файл html, но я не могу найти способ добавить наборы в глобальную переменную, которая создается зависимостями.

Например:

В моем html я включаю d3 примерно так:

<script src="https://cdn.jsdelivr.net/npm/d3@5.15.0/dist/d3.min.js"></script>

В моем файле index.ts есть следующее:

declare const d3; // currently has the <any> type

//I do stuff with d3 down here

и что отлично работает . Но D3 - огромная библиотека, и intellisense помогает куче людей, поэтому я не постоянно смотрю на их запутанную документацию постоянно. Я хотел бы иметь возможность включить мой файл для печати следующим образом:

import type d3 from 'd3'
declare const d3:d3; 

, но эти ошибки, потому что он конфликтует с моим локальным объявлением.

Вкратце

Есть ли у кого-нибудь хороший способ применить набор текста к внешнему javascript файлу?

[ПРАВИТЬ] Я включил свой пакет. json файл ниже, чтобы показать, какие технологии я использую. Это действительно не так много.

{
  "name": "",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch": "webpack -w"
  },
  "keywords": [],
  "author": "Michael Sorensen",
  "license": "ISC",
  "dependencies": {
     // I'm including the dependencies that were here in my html file
  },
  "devDependencies": {
    "@types/chart.js": "^2.9.16",
    "@types/d3": "^5.7.2",
    "@types/geojson": "^7946.0.7",
    "@types/papaparse": "^5.0.3",
    "ts-loader": "^6.2.2",
    "typescript": "^3.8.3",
    "webpack": "^4.42.0",
    "webpack-cli": "^3.3.11",
    "webpack-node-externals": "^1.7.2"
  }
}

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Так что, если вы найдете этот пост на SO @, ответ Эрика Филлипса, вероятно, тот, который вы ищете.

Однако в моем случае я просто неправильно настроил свой веб-пакет. Мне нужно было вручную определить свои внешние модули вместо использования плагина webpack пакета node_externals.

Мой файл webpack.config. js теперь выглядит следующим образом:


module.exports = {
  mode: "production",
  entry: "./src/index.ts",
  devtool: "inline-source-map",
  externals: [
    {
      d3: "d3",
      "chart.js": "Chart",
      papaparse: "Papa",
    }
  ], // in order to ignore all modules in node_modules folder
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: "ts-loader",
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: [".tsx", ".ts", ".js", ".json"]
  },
  output: {
    filename: "index.js",
    path: path.resolve(__dirname, "build")
  }
};

Теперь я могу связывать свои файлы машинописи без включения упомянутых библиотек, не меняя способ их импорта. Кажется, теперь так очевидно.

0 голосов
/ 26 марта 2020

Если ваш редактор поддерживает файлы типа .d.ts, вы сможете найти его по адресу:

https://github.com/DefinitelyTyped/DefinitelyTyped

...