我有一个大型项目,其中包含多个子项目,这些子项目共享一些常见的任务。我打算将这些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
时,任务列表不会显示。以下是将上述任务安装到其他项目中所遵循的步骤。
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
任务会正确列出。