Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Grunt生成新的node_模块_Javascript_Node.js_Typescript_Gruntjs_Grunt Ts - Fatal编程技术网

Javascript Grunt生成新的node_模块

Javascript Grunt生成新的node_模块,javascript,node.js,typescript,gruntjs,grunt-ts,Javascript,Node.js,Typescript,Gruntjs,Grunt Ts,我正在创建一个grunt配置,将我所有的Typescript文件编译成Javascript。我希望将生成的所有Javascript文件保存在一个构建文件夹中,但同时保持相同的文件夹结构 例如: src/controllers/myController.ts将编译为:build/controllers/myController.js 我创建了一个grunt配置,它可以完成这项工作,但出于某些原因,它还可以在build目录中生成一个node_modules文件夹,这需要很多时间。我的grunt配置如

我正在创建一个grunt配置,将我所有的Typescript文件编译成Javascript。我希望将生成的所有Javascript文件保存在一个构建文件夹中,但同时保持相同的文件夹结构

例如:
src/controllers/myController.ts
将编译为:
build/controllers/myController.js

我创建了一个grunt配置,它可以完成这项工作,但出于某些原因,它还可以在build目录中生成一个node_modules文件夹,这需要很多时间。我的grunt配置如下所示:

    module.exports = function(grunt) {
      grunt.config.set('ts', {
        dev: {
          files: [
           {
            src: ['**/*.ts'],
            dest: 'build/'
            }
          ],
          options: {
            target: 'es5',
            fast: 'watch',
            comments: false,
            sourceMap: false,
            failOnTypeErrors: true,
            flatten: false,
            expand: true,
            module: 'system',
            moduleResolution: 'classic'
          }
        }
      });

      grunt.loadNpmTasks('grunt-ts');
    };

有没有办法禁用节点_模块生成过程?因为我认为我不需要它们,这使得编译过程非常缓慢

您的项目中是否有tsconfig.json设置

您可能需要排除那里的节点\u模块目录(请参阅文档:)

然后可以在grunt配置中使用tsconfig.json(请参阅入门部分:)

使用相应的tsconfig.json文件,如:

{
"include": [
    "src/**/*.ts*"
],
"exclude": [
    "node_modules"
],
"compilerOptions": {
    "target": "ES5",
    "fast": "watch,
    "sourceMap": false,
    "module": "system",
    "removeComments": true,
    "outDir": "build/",
    "rootDir" ".",
...
}
}

注意:使用tsconfig.json是使用TypeScript的最佳方式


希望这有所帮助?

以下配置应满足您的要求。它将忽略
节点\u模块
目录,并在生成的
构建
目录中复制相同的源目录结构(如
src/
中所示):

module.exports=函数(grunt){
grunt.config.set('ts'{
开发人员:{
选项:{
rootDir:'src/',
目标:‘es5’,
快:“看”,
评论:错,
sourceMap:false,
failOnTypeErrors:true,
模块:“系统”,
模块解决方案:“经典”
},
src:'src/***.ts',
dest:'build/'
}
});
grunt.loadNpmTasks(“grunt-ts”);
};
注意事项:

  • rootDir
    属性被添加到
    options
    对象中,其值设置为
    'src/'

  • 已从
    选项
    对象中删除
    展平:假
    展开:真

  • files
    属性已替换为
    src
    dest
    属性,其值分别设置为
    src/***.ts
    build/

结果目录结构示例:

以下目录结构:

。
├── src
│   ├── 另一个文件夹
│   │   └── quux.ts
│   ├── 控制器
│   │   └── myController.ts
│   └── 福茨
├── Grunfile.js
├── 节点单元
│   └── ...
└── ...
运行
$grunt ts
后将产生如下结果:

。
├── 建筑
│   ├── 另一个文件夹
│   │   └── qux.js
│   ├── 控制器
│   │   └── myController.js
│   └── foo.js
├── src
│   ├── 另一个文件夹
│   │   └── quux.ts
│   ├── 控制器
│   │   └── myController.ts
│   └── 福茨
├── Grunfile.js
├── 节点单元
│   └── ...
└── ...

我已经试过了,但出于某种原因,Grunt似乎不尊重我的
tsconfig.json
文件。如果我使用
tsconfig.json
文件并将其添加到我的Grunt配置中,它不会做任何事情。我使用了以下grunt配置:
module.exports=function(grunt){grunt.config.set('ts',{dev:{default:{tsconfig:'./tsconfig.json'},文件:[{src:['***.ts'],dest:'build/'},});grunt.loadNpmTasks('grunt-ts');}尝试向src添加
['**/*.ts',“!node_modules/**”]
。它应该排除node_modules目录。我不知道为什么Grunt设置不尊重tsconfig.json。你试过我提到的极简主义设置吗?正如grunt ts github页面所指出的,仅使用tsconfig.json是一种最佳实践。我尝试过,当我这样做时,不会生成节点_模块。但如果我这样做,构建文件夹结构就会变得平淡。所以我所有的Javascript文件都在同一个文件夹中。我需要构建目录的文件夹结构与src目录的文件夹结构相同,但不能确定您的确切设置。指定
src
如下时会发生什么:
[“src/***/*.ts”]
?它会将文件夹结构保留在outDir中吗?也许您需要将
rootDir:“.”
设置为您的选项?这正是我需要的!非常感谢。我注意到的一件事是,当存在多个Typescript文件时,Grunt只会重新构造构建目录中的文件夹结构。因为我只测试了一个文件,所以它没有在build目录中创建映射。谢谢你的帮助:)
{
"include": [
    "src/**/*.ts*"
],
"exclude": [
    "node_modules"
],
"compilerOptions": {
    "target": "ES5",
    "fast": "watch,
    "sourceMap": false,
    "module": "system",
    "removeComments": true,
    "outDir": "build/",
    "rootDir" ".",
...
}