Nano Hash - криптовалюты, майнинг, программирование

Как выполнить модуль npm локально?

Я пытаюсь написать модуль npm. Однако рабочий процесс немного странный. Я хотел бы просто выполнить свою функцию после внесения изменений.

Это мой файл index.js:

const _ = require("lodash");

exports.run = () => {
  const array = [1, 2, 3];
  const double = _.map(array, x => x * 2);
  console.log("heyyyyyyyy: ", double);
};

В настоящее время из того, что я могу сказать, единственный способ проверить это — создать еще один модуль npm, npm link мой оригинальный, а затем npm link MyModule из второго. (как показано здесь: https://stackoverflow.com/a/20888757/1555312)

Это было бы головной болью в команде, так как мне пришлось бы объяснять всем, что нам нужно 2 модуля только для тестирования 1. Есть ли способ, которым я могу просто запустить npm run MyModule? Или заходить в консоль npm и запускать const myModule = require("MyModule"); myModule.run() каждый раз, когда я вношу изменения?

06.03.2018

Ответы:


1

Я обычно использую module.parent, чтобы проверить, требуется ли файл или нет, а затем запускаю код внутри него, например. что-то вроде ниже:

const _ = require("lodash");

exports.run = () => {
  const array = [1, 2, 3];
  const double = _.map(array, x => x * 2);
  console.log("heyyyyyyyy: ", double);
}

if (!module.parent) {
  exports.run();
}
06.03.2018
  • Как бы вы запустили файл с вашего терминала? 06.03.2018
  • Просто запустите его с узлом, например. node index.js (или любое другое имя файла) 06.03.2018
  • Хороший! Это потрясающе. Спасибо 06.03.2018
  • @ Эдмунд Не за что. Удачи вам в кодировании! Кроме того, я бы рекомендовал для тестирования github.com/substack/tape. 06.03.2018
  • Будет ли это работать с Babel? Я использую import (пример: import _ from "lodash") 06.03.2018
  • Он должен работать с babel, так как module.parent — это просто javascript. 06.03.2018

  • 2

    Похоже, если я вытащу содержимое метода и запущу файл с node index.js, он сработает!

    const _ = require("lodash");
    
    const array = [1, 2, 3];
    const double = _.map(array, x => x * 2);
    console.log("heyyyyyyyy: ", double);
    
    06.03.2018
  • Но тогда вы ничего не экспортируете. 06.03.2018
  • Да, я думаю, что ваш способ лучше, так как это означает, что я могу либо опубликовать его на npm, либо позволить загрузить его в теге скрипта. 06.03.2018
  • Стоит отметить, что это делается только для того, чтобы вам было проще запускать код во время его фактической разработки. Лучший способ — написать несколько тестов, которые запускают ваш код, но если вы начнете с этого, позже просто извлечь этот код в тесты. 06.03.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..