首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AoT生成之后,未能删除文件

在AoT生成之后,未能删除文件
EN

Stack Overflow用户
提问于 2017-10-14 20:43:14
回答 2查看 743关注 0票数 1

当我从我的package.json文件运行build:prod命令时,编译成功地生成,但是无法删除.ngsummary.json文件以及所有.ngfactory.ts文件。

package.json文件:

代码语言:javascript
复制
{
  "name": "name",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "build": "del-cli public/js/app && webpack --config webpack.config.dev.js --progress --profile --watch",
    "build:prod": "del-cli public/js/app && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail && del-cli 'public/js/app/**/*.js' 'public/js/app/**/*.js.map' '!public/js/app/bundle.js' '!public/js/app/*.chunk.js' 'assets/app/**/*.*.ngfactory.ts' 'assets/app/**/*.shim.ts' 'assets/app/**/*.ngsummary.json' 'assets/app/**/*.ngstyle.ts'"
  },
  "dependencies": {
  "@angular/animations": "^4.4.3",
  "@angular/cdk": "github:angular/cdk-builds",
  "@angular/cli": "^1.4.2",
  "@angular/common": "^4.4.3",
  "@angular/compiler": "^4.4.3",
  "@angular/compiler-cli": "^4.4.3",
  "@angular/core": "^4.4.3",
  "@angular/forms": "^4.4.3",
  "@angular/http": "^4.4.3",
  "@angular/platform-browser": "^4.4.3",
  "@angular/platform-browser-dynamic": "^4.4.3",
  "@angular/platform-server": "^4.4.3",
  "@angular/router": "^4.4.3",
  "@angular/upgrade": "^4.4.3",
  "bcryptjs": "^2.4.3",
  "body-parser": "~1.17.1",
  "cookie-parser": "~1.4.3",
  "core-js": "^2.5.1",
  "debug": "~2.6.3",
  "express": "^4.15.5",
  "hammerjs": "^2.0.8",
  "hbs": "~4.0.1",
  "jsonwebtoken": "^8.0.1",
  "mongoose": "^4.11.12",
  "mongoose-unique-validator": "^1.0.6",
  "morgan": "~1.8.1",
  "portfinder": "^1.0.13",
  "reflect-metadata": "^0.1.10",
  "rxjs": "^5.4.3",
  "serve-favicon": "~2.4.2",
  "webpack": "^3.6.0",
  "zone.js": "^0.8.17"
},
"devDependencies": {
  "@types/core-js": "0.9.36",
  "@types/node": "6.0.45",
  "angular-router-loader": "^0.6.0",
  "angular2-template-loader": "^0.6.2",
  "awesome-typescript-loader": "^3.1.2",
  "del-cli": "^0.2.0",
  "file-loader": "^1.1.5",
  "html-loader": "^0.4.4",
  "html-webpack-plugin": "^2.30.1",
  "image-webpack-loader": "^3.4.2",
  "raw-loader": "^0.5.1",
  "style-loader": "^0.18.2",
  "ts-loader": "^2.0.3",
  "typescript": "^2.5.2",
  "webpack": "^2.2.1",
  "webpack-merge": "^4.1.0"
  }
}

具体引用此命令:

代码语言:javascript
复制
"build:prod": "del-cli public/js/app && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail && del-cli 'public/js/app/**/*.js' 'public/js/app/**/*.js.map' '!public/js/app/bundle.js' '!public/js/app/*.chunk.js' 'assets/app/**/*.*.ngfactory.ts' 'assets/app/**/*.shim.ts' 'assets/app/**/*.ngsummary.json' 'assets/app/**/*.ngstyle.ts'"

当构建成功时,我的项目就会被.ngsummary.json & ngfactory.ts文件弄得乱七八糟,这些文件应该被build:prod脚本删除。所有其他文件类型都会被删除(它们不会出现在我的工作目录中,而是只出现在目标目录中)。

我想我应该包括我的webpack.config文件--这些文件分为3部分:

webpack.config.common.js:

代码语言:javascript
复制
var webpack = require('webpack');

module.exports = {
    entry: {
        'app': './assets/app/main.ts'
    },

    resolve: {
        extensions: ['.js', '.ts']
    },

    module: {
        rules: [
            {
                test: /\.html$/,
                use: [{ loader: 'html-loader' }]
            },
            {
                test: /\.css$/,
                use: [{ loader: 'raw-loader' }]
            }
        ],
        exprContextCritical: false
    }
};

webpack.config.dev.js:

代码语言:javascript
复制
var path = require('path');

var webpackMerge = require('webpack-merge');
var commonConfig = require('./webpack.config.common.js');

module.exports = webpackMerge(commonConfig, {
    devtool: 'cheap-module-eval-source-map',

    output: {
        path: path.resolve(__dirname + '/public/js/app'),
        publicPath: "/js/app/",
        filename: 'bundle.js',
        chunkFilename: '[id].chunk.js'
    },
    module: {
        rules: [
            {
                test: /\.ts$/,
                use: [
                    {loader: 'awesome-typescript-loader', options: {
                        transpileOnly: true
                    }},
                    {loader: 'angular2-template-loader'},
                    {loader: 'angular-router-loader'}
                ]
            }
        ]

    }
});

webpack.config.prod.js:

代码语言:javascript
复制
var path = require('path');

var webpack = require('webpack');
var webpackMerge = require('webpack-merge');
var commonConfig = require('./webpack.config.common.js');

module.exports = webpackMerge.smart(commonConfig, {
    entry: {
        'app': './assets/app/main.aot.ts'
    },

    output: {
        path: path.resolve(__dirname + '/public/js/app'),
        filename: 'bundle.js',
        publicPath: '/js/app/',
        chunkFilename: '[id].[hash].chunk.js'
    },

    module: {
        rules: [
            {
                test: /\.ts$/,
                use: [
                    'awesome-typescript-loader',
                    'angular2-template-loader',
                    'angular-router-loader?aot=true'
                ]
            }
        ]
    },

    plugins: [
        new webpack.optimize.UglifyJsPlugin({
            sourceMap: false
        })
    ]
});

如果windows 10与操作系统权限有任何关系,我将使用它--我对此表示怀疑,但您永远也不知道。

编辑:我想我应该添加tsconfig.json:

代码语言:javascript
复制
{
  "compilerOptions": {
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es5",
      "dom"
    ]
  }
}

和tsconfig.aot.json:

代码语言:javascript
复制
{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "./public/js/app"
  },
  "typeRoots": [
    "node_modules/@types"
  ],
  "lib": [
    "es5",
    "dom"
  ],
  "angularCompilerOptions": {
    "skipMetadataEmit": true
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-20 12:42:56

我也有同样的问题,解决方案是tsconfig.aot.json

代码语言:javascript
复制
{
  "compilerOptions": {
  "target": "es6",
 "module": "es2015",
 "moduleResolution": "node",
"sourceMap": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "./public/js/app"
},
 "typeRoots": [
"node_modules/@types"
],
"lib": [
 "es5",
 "es6",
 "es2015",
 "es2017",
 "dom",
 "scripthost"
],
"angularCompilerOptions": {
 "skipMetadataEmit": true
 }
}

tsconfig.json

代码语言:javascript
复制
{
 "compilerOptions": {
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
  "node_modules/@types"
],
"lib": [
  "es5",
  "es2015",
  "es2017",
  "dom",
  "scripthost"
  ]
 }
}
票数 1
EN

Stack Overflow用户

发布于 2019-03-18 18:33:23

我有一些类似的问题,让我的生产建设后,清理成功。我的示例项目非常类似于OP。最大的区别是,我使用的是最新的角度版本,目前是7.2.9。我没有按建议更改lib部分。我从每个路径描述中删除了单引号。所以(来自我的package.json)而不是这个:

代码语言:javascript
复制
"build:prod": "del-cli dist && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail 
&& del-cli 'src/**/*.js' 'src/app/**/*.ngfactory.ts' 'src/app/**/*.js.map'

我做了这个:

代码语言:javascript
复制
"build:prod": "del-cli dist && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail 
&& del-cli src/**/*.js src/app/**/*.ngfactory.ts src/app/**/*.js.map

这对我确实有用。我意识到在角4( OP的版本)和角7(我的版本)之间有相当大的差距,然而我的问题似乎与OP相同。我猜del已经有一段时间没有发生明显的变化了。

添加了相关的package.json:

代码语言:javascript
复制
 "dependencies": {
"@angular/common": "^7.2.9",
"@angular/compiler": "^7.2.9",
"@angular/compiler-cli": "^7.2.9",
"@angular/core": "^7.2.9",
"@angular/forms": "^7.2.9",
"@angular/http": "^7.2.9",
"@angular/platform-browser": "^7.2.9",
"@angular/platform-browser-dynamic": "^7.2.9",
"@angular/platform-server": "^7.2.9",
"@angular/router": "^7.2.9",
"@angular/upgrade": "^7.2.9",
"core-js": "^2.6.5",
"rxjs": "^6.4.0",
"zone.js": "^0.8.29"
},
"devDependencies": {
"@ngtools/webpack": "^7.3.6",
"@types/core-js": "^2.5.0",
"@types/node": "^11.11.3",
"angular-router-loader": "^0.8.5",
"angular2-template-loader": "^0.6.2",
"awesome-typescript-loader": "^5.2.1",
"del-cli": "^1.1.0",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"raw-loader": "^1.0.0",
"typescript": "^3.2.4",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1",
"webpack-merge": "^4.2.1"
}

注意:我运行的是windows 10系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46749153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档