Хорошо, я нашел ответ на этот вопрос, но в процессе я нашел массу других связанных вещей, которые, вероятно, могли бы помочь другим.
Во-первых, теперь я понимаю, что я хотел сделать, это установить текущий пакет. как локальная зависимость . Это можно сделать в package.json
, используя следующий синтаксис, найденный в в этом ответе .
{
"name": "@place/fn",
"dependencies": {
"@place/fn": "file:./"
}
}
Теперь я могу запустить npm i
, чтобы установить это изменение, и кодировать следующий тест file:
import mainThing, { anotherThing } from '@place/fn';
При запуске тестового файла импорт будет действовать так, как если бы он был установлен в другой пакет; лучше имитировать предполагаемое использование.
Еще одна вещь, которую я обнаружил, заключается в том, что вы можете создавать псевдонимы пакетов, установленных из npm, используя синтаксис, найденный в в этом ответе .
"dependencies": {
"case-1.5.3": "npm:case@^1.5.3",
"kool": "npm:case@^1.6.1"
}
Что затем позволяет сделать следующее:
let Case = require('case-1.5.3');
let Kool = require('kool');
И, наконец, еще одна вещь, которую я обнаружил, заключается в том, что Node@13 позволяет для нового ключа на package.json
, который отображает каталоги, найденные в этом ответе . Существуют другие пакеты (например, module-alias
), которые делают что-то похожее, с большой разницей в том, что установленные решения (ie: module-alias
) работают только из пакета, с которым вы работаете. Кажется, что новая клавиша exports
на package.json
выполнит сопоставление для использования в других пакетах.
// ./node_modules/es-module-package/package.json
{
"name": "es-module-package",
"exports": {
"./my/": "./src/js/lib/my/"
}
}
import thing from 'es-module-package/my/thing.js';
// Loads ./node_modules/es-module-package/src/js/lib/my/thing.js
В конечном итоге цель всего этого состояла в том, чтобы проверьте, что стиль синтаксисов, которые я предоставляю вне пакета, можно проверить изнутри пакета вместо его установки в другой пакет и тестирования там. Теперь я могу проверить, что для моего пакета работает общий синтаксис импорта loda sh.
import get from 'lodash/get'
(я знал sh Я знал, какова терминология, требующая чистого, возможно, псевдонимного пути пакет вместо деструкции основного экспорта.)