Как поделиться gulp задачами, используя npm? - PullRequest
0 голосов
/ 28 марта 2019

У меня есть крупномасштабный проект с несколькими подпроектами, которые разделяют некоторые общие задачи. Я планирую разработать эти gulp задачи как отдельную библиотеку npm.

То, что я до сих пор делал, это создание проекта TypeScript, который имеет следующую структуру,

GulpLibrary
   src
      tasks
         clean.ts
         build.ts
         publish.ts
      utils
         task-helpers.ts
         constants.ts
      gulpfile.ts
      index.ts
   gulpfile.js
   tsconfig.json
   package.json
  • src\tasks\** содержит все глотковые задания.
  • src\utils\** содержит все распространенные логики.
  • src\gulpfile.ts выглядит следующим образом,
import './tasks/clean';
import './tasks/build';
import './tasks/publish';
  • \gulpfile.js выглядит следующим образом,
'use strict';

const path = require('path');

// Register TS compilation.
require('ts-node').register({
    project: path.join(__dirname, '/tsconfig.json')
});

require('./src/gulpfile');
  • \tsconfig.json выглядит следующим образом,
{
  "$schema": "http://json.schemastore.org/tsconfig",
  "compilerOptions": {
    "target": "es5",
    "lib": ["es6", "es2015"],
    "moduleResolution": "node",
    "module": "commonjs",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "declaration": true,
    "noEmitOnError": true,
    "noImplicitAny": true,
    "sourceMap": false,
    "inlineSources": true,
    "stripInternal": true,
    "rootDir": "./src",
    "outDir": "./dist/mytools",
    "strict": true
  },
  "types": [
    "node"
  ],
  "typeRoots": [
    "node_modules/@types"
  ],
  "include": [
    "**/*.ts"
  ],
  "exclude": [
    "node_modules",
    "./dist"
  ]
}

Когда я запускаю gulp --tasks внутри GulpLibrary, все задачи отображаются в списке, как и ожидалось.

Но когда я запускаю gulp --tasks в моем другом проекте, список задач не отображается. Ниже приведены шаги, которые я выполнил, чтобы установить вышеуказанные задачи в мой другой проект.

  • Компилировать файлы машинописного текста, используя tsconfig, показанный выше (использовал ту же задачу gulp в этой библиотеке)
  • В моем другом проекте запускается npm install path\to\dist\mytools, и пакет устанавливается в node_modules.
  • В другом проекте я создал gulpfile.js в корне проекта. Содержание файла выглядит следующим образом:
'use strict';
require('@tc-devkit/tools/gulpfile');

Почему список задач не отображается должным образом?

ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ:

Если я запускаю, gulp --tasks -f=node_modules\mytools\gulpfile.js задачи отображаются правильно.

...