javascript - Grunt 生成新的node_modules

标签 javascript node.js typescript gruntjs grunt-ts

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

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

我创建了一个 grunt 配置来完成这件事,但由于某些原因,它还在构建目录中生成了一个 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');
    };

有什么方法可以禁用node_modules生成过程吗?因为我认为我不需要它们,这使得编译过程非常慢。

最佳答案

以下配置应该可以满足您的要求。它将忽略 node_modules 目录并在生成的 build 目录中重现相同的源目录结构(如 src/ 中所示):

module.exports = function(grunt) {

  grunt.config.set('ts', {
    dev: {
      options: {
        rootDir: 'src/',
        target: 'es5',
        fast: 'watch',
        comments: false,
        sourceMap: false,
        failOnTypeErrors: true,
        module: 'system',
        moduleResolution: 'classic'
      },
      src: 'src/**/*.ts',
      dest: 'build/'
    }
  });

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

注释:

  • rootDir 属性已添加到 options 对象,并将其值设置为 'src/'

  • flatten: falseexpand: true 均已从 options 对象中删除。

  • files 属性已替换为 srcdest 属性,其值设置为 src/**分别为/*.tsbuild/

结果目录结构示例:

以下目录结构:

.
├── src
│   ├── another-folder
│   │   └── quux.ts
│   ├── controllers
│   │   └── myController.ts
│   └── foo.ts
├── Gruntfile.js
├── node_modules
│   └── ...
└── ...

运行$ grunt ts后结果如下:

.
├── build
│   ├── another-folder
│   │   └── quux.js
│   ├── controllers
│   │   └── myController.js
│   └── foo.js
├── src
│   ├── another-folder
│   │   └── quux.ts
│   ├── controllers
│   │   └── myController.ts
│   └── foo.ts
├── Gruntfile.js
├── node_modules
│   └── ...
└── ...

关于javascript - Grunt 生成新的node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367362/

相关文章:

javascript - 按住 shift 时不要保持 jQuery 可调整大小的纵横比

javascript - 是否有与 MooTools 的 set() 等效的 jQuery?

node.js - node-orm 同步到 Alter Tables(类似于 DataMapper.auto_upgrade)

javascript - Node.js/Express.js - 我应该将我所有的函数包装在一个新的 Promise 中吗?

typescript - 构建类注册表 : Cannot use 'new' with an expression whose type lacks a call or construct signature

node.js - 返回时 typescript 不读取null

jquery - 找不到 'jquery' 的类型定义文件

javascript - babel flask jinja javascript hell

javascript - jQuery:遍历 Chrome/Safari 中的 AJAX 响应

javascript - 无法使用 sinon 模拟护照验证 ('local' ) 方法