如何使用npm共享gulp任务?

时间:2019-03-28 17:36:01

标签: node.js typescript npm gulp

我有一个大型项目,其中包含多个子项目,这些子项目共享一些常见的任务。我打算将这些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\**包含所有gulp任务。
  • 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任务会正确列出。

0 个答案:

没有答案