监视nodemon js或npm中的新文件创建事件

问题描述 投票:0回答:1

是否可以使用nodemon js或npm或任何其他软件包来监视仅新文件创建事件?例如:在项目中,每次创建新文件时,都必须运行某些其他脚本来执行仅一次设置的其他任务。

当前,每次使用文件更改时,使用nodemon进行设置的方式都会运行脚本,但这会浪费资源(CPU /内存),因为设置是一次性的,只有在创建新文件时才需要。

希望在这里没有意义的是一个简单的例子。

例如,每次创建新文件时,我们要运行一个脚本,该脚本会自动创建一些记录或指向该文件的链接-只需执行一次。

替代:如果在nodemon或npm软件包中不可能,是否有其他选择,例如直接使用shell脚本(Windows + Linux)或python?

python node.js typescript npm nodemon
1个回答
0
投票

Python是一种简单的方法!

使用watchdog

通过pip install watchdog安装

尝试此脚本并修改“ on_created”功能做你想做的事。您可以使用os.system(“ some script”)来调用另一个脚本,或者使用subprocess.call([“ node”,“ test.js”])。

import subprocess
import os
import sys
import time

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class CustomHandler(FileSystemEventHandler):
    """Logs all the events captured."""

    def on_moved(self, event):
        super(CustomHandler, self).on_moved(event)
        what = 'directory' if event.is_directory else 'file'
        print("Moved {}: from {} to {}".format(what, event.src_path,
                     event.dest_path))

    def on_created(self, event):
        super(CustomHandler, self).on_created(event)
        what = 'directory' if event.is_directory else 'file'
        print("Created {}: {}".format(what, event.src_path))

    def on_deleted(self, event):
        super(CustomHandler, self).on_deleted(event)

        what = 'directory' if event.is_directory else 'file'
        print("Deleted {}: {}".format(what, event.src_path))

    def on_modified(self, event):
        super(CustomHandler, self).on_modified(event)
        what = 'directory' if event.is_directory else 'file'
        print("Modified {}: {}".format(what, event.src_path))
if __name__ == "__main__":
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = CustomHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=False)
    observer.start()
    print("Watchdog started...")
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

希望这会有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.