Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 如何从内置文件中排除文件类型?_Javascript_Angular_Typescript_Webpack_Mocking - Fatal编程技术网

Javascript 如何从内置文件中排除文件类型?

Javascript 如何从内置文件中排除文件类型?,javascript,angular,typescript,webpack,mocking,Javascript,Angular,Typescript,Webpack,Mocking,在Angular 9项目中,我使用两种环境:生产环境和模拟环境 我希望: 当我运行ng build-prod时 那么模拟文件不应该包含在js包中 我正在使用扩展名.mock.ts来创建mock文件,并创建mock文件夹,以便它们更易于过滤 我认为这可以通过webpack实现,但我无法做到: 项目结构: 这是我在angular.json文件中的构建配置: 这是我的webpack.config.js: 常量路径=要求“路径”; module.exports={ 模式:"发展",, //确保源映射工作

在Angular 9项目中,我使用两种环境:生产环境和模拟环境

我希望:

当我运行ng build-prod时

那么模拟文件不应该包含在js包中

我正在使用扩展名.mock.ts来创建mock文件,并创建mock文件夹,以便它们更易于过滤

我认为这可以通过webpack实现,但我无法做到:

项目结构:

这是我在angular.json文件中的构建配置:

这是我的webpack.config.js:

常量路径=要求“路径”; module.exports={ 模式:"发展",, //确保源映射工作正常 devtool:“评估源地图”, //网页包将传输TS和JS文件 决心:{ 扩展名:['.ts','.js'], }, 输出:{ 文件名:“bundle.js”, 路径:path.resolve__dirname,“dist”, }, 模块:{ 规则:[ { 测试:/\.ts$/,, 排除:['/node_modules/','/src/app/integration'], 使用:[ { 加载器:“ts加载器”, 选项:{ transpileOnly:是的, }, }, ], }, ], }, };
src文件夹中的tsconfig.app.json文件对此有一个特定的排除部分。如果您的mocks目录位于src之外,您必须在项目的根目录中尝试主tsconfig.json。

您能检查一下吗


排除:[***.mock.ts]

我找到的唯一解决方案是创建模拟服务,因此模拟文件将仅用于此模拟服务

根据环境的不同,如果是生产环境,则这些服务不会注入模块中,因此模拟也不会

|- app
  |- integration
    |- country
      |- mocks
        get-countries.mock.ts
      country.service.mock.ts
      country.service.ts
    |- device
      |- mocks
        get-devices.mock.ts
      device.service.mock.ts
      device.service.ts

我已经尝试将exclude:[**/mocks/,**.mock.ts]添加到我的tsconfig.app.json中,但mock仍然在包中。你能举个例子吗?谢谢关闭,尝试**/*.mock.tst无效。My tsconfig.app.json:```{extends:./tsconfig.json,编译器选项:{outDir:./out tsc/app,type:[]},angularcomileoptions:{enableIvy:true},files:[src/main.ts,src/polyfills.ts],exclude:[*/.mock.ts]}``不起作用。我尝试将其添加到tsconfig.app.json、tsconfig.json和webpack.config.js中
"architect": {
    "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        ...
      },
      "configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true,
        },
        "mock": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.mock.ts"
            }
          ]
        }
      }
    },
}
|- app
  |- integration
    |- country
      |- mocks
        get-countries.mock.ts
      country.service.mock.ts
      country.service.ts
    |- device
      |- mocks
        get-devices.mock.ts
      device.service.mock.ts
      device.service.ts