2017-03-23 32 views

回答

55

https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/build.ts#L27(当前角度CLI版本:1.0.1)有一个条件:

if (config.project && config.project.ejected) { 
    throw new SilentError('An ejected project cannot use the build command anymore.'); 
} 

当您运行ng-eject的package.json文件与新的NPM脚本修改,webpack.config .js文件文件添加或更换弹出标志被添加到您的.angular.cli.json

"project": { 
    "name": "YOUR PROJECT NAME", 
    "ejected": true 
}, 

所以,只要删除您.angular.cli.json文件 “弹出” 标志:

或更改此标志false

"project": { 
    "name": "YOUR PROJECT NAME", 
    "ejected": false 
} 
+0

非常有用的答案!我设法引导加载这样!看来纳克服务不等于NPM运行build&npm start – skiabox

+0

如果在单独提交中执行弹出操作,稍后可以通过回滚该提交权限来恢复更改。 – Askdesigners

+0

实际上只有package.json可能需要恢复,因为ng eject可能会更改您的脚本部分并添加webpack所需的dev依赖关系(加载器)。虽然我注意到使用-f标志运行ng eject会将旧npm脚本与新添加的npm脚本合并,但应该检查它。所以,我认为,如果在弹出后的旧npm脚本仍然在package.json中,并且您不关心加载器,只需更改或删除* .angular.cli.json *中的“弹出”标志并删除* webpack即可。 config.js *就足够了,你可以再次运行所有ng命令。弹出不会更改任何自定义代码或核心代码 – Andriy

2

随着角度CLI的当前版本,你需要标记弹出:false或删除文件angular-cli.json文件中的弹出属性而不是package.json文件

1

该命令使构建配置成为您的项目的一部分,并摆脱Angular CLI。并在angular-cli.json文件中设置“ejected”:true,在项目根目录下创建新文件webpack.config.js,并在package.json中修改运行脚本。

最后,撤消NG-弹出命令有必要修改的package.json文件再次