首页 > 解决方案 > 在“$ npm run watch”运行时,如果目录中的文件被修改,则运行自定义脚本

问题描述

我有以下虚拟Laravel 5.5 + React项目:

$ git clone https://github.com/tlg-265/laravel-5.5-react.com
$ cd laravel-5.5-react.com
$ npm i
$ npm run watch

我的目标是:当:$ npm run watch正在运行时,只要某些文件:/template/template-XX.json被修改,脚本/template/listener.js就会被执行。

发生这种情况时,变量: template(inside: listener.js) 应该获取修改后文件的名称(JSON上面的文件),例如:template-02.json.

这是文件的内容/template/listener.js

var template = '###TBD###';
console.log(`The template: ${template} was modified.`);

可能实现这一目标的一种方法是配置文件:package.json相应地。这是文件的内容package.json::

{
  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.17",
    "babel-preset-react": "^6.23.0",
    "bootstrap-sass": "^3.3.7",
    "cross-env": "^5.1",
    "jquery": "^3.2",
    "laravel-mix": "^1.0",
    "less": "^3.11.1",
    "less-loader": "^5.0.0",
    "lodash": "^4.17.4",
    "react": "^15.4.2",
    "react-dom": "^15.4.2"
  }
}

以防万一,这是文件结构的预览:

在此处输入图像描述

关于如何实现这一目标的任何想法?

谢谢!

标签: node.jsreactjslaravelnpmlaravel-mix

解决方案


推荐阅读