我有一个用于内部git服务器上托管的常见组件的npm软件包。由于某种原因,当我调用npm install另一个项目时,我想在其中使用它将不会运行该prepare挂钩。显然,这不起作用,因为npm软件包需要/distnode_modules中的文件夹才能使用该软件包。
我已经尝试过诸如使用不赞成使用的prepublish钩子之类的方法,即使这样也不会被调用。我还尝试做postinstall一下看是否可以在安装后进行构建,但是该钩子确实被称为失败,因为未安装devDependencies
package.json
{
"name": "common-components",
"version": "0.1.0",
"scripts": {
"prepare": "npm run build",
"build": "ng build",
...
},
"private": true,
"dependencies": {
...
},
"devDependencies": {
...
},
}
Run Code Online (Sandbox Code Playgroud)
用于安装的命令
npm install --save git+ssh://{URL-to-common-components-repo}}
Run Code Online (Sandbox Code Playgroud)
我已经通读了npm-scripts文档https://docs.npmjs.com/misc/scripts,似乎他们坚持认为prepare对于此确切用例应始终调用钩子
就像我注意到的那样,我在NPM社区https://npm.community/t/using-npm-ci-does-not-run-prepare-script-for-git-modules/632/4上发现了这个错误。
我正在使用npm 6.4.1,它应该根据错误工作
我正在尝试通过此链接https://angular.io/guide/universal使用Angular Universal使用SSR渲染Angular 7应用程序。我以为我可以从那里开始一切工作,因为我能够查看页面源代码并看到呈现给页面的app.component内部的所有内容。但是,我无法在router-outlet标记内渲染任何路线
我只是简单地剥离了我的应用程序,以完全按照文档中的说明进行操作。我在其中读到了一些有关确保ModuleMapLoaderModule在app.server.module内部的内容,以便进行延迟加载。默认情况下,angular-cli命令会附带此命令,因此我不确定发生了什么。
app.server.module
import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
import { AppComponent } from './app.component';
import { AppModule } from './app.module';
@NgModule({
imports: [
AppModule,
ServerModule,
ModuleMapLoaderModule,
],
bootstrap: [AppComponent],
})
export class AppServerModule {}
Run Code Online (Sandbox Code Playgroud)
tsconfig.server.json
"extends": "./tsconfig.app.json",
"compilerOptions": {
"outDir": "../out-tsc/app-server",
},
"angularCompilerOptions": {
"entryModule": "app/app.server.module#AppServerModule"
}
}
Run Code Online (Sandbox Code Playgroud)
server.ts
import 'zone.js/dist/zone-node';
import { enableProdMode } from '@angular/core';
// Express …Run Code Online (Sandbox Code Playgroud)