2016-06-13 30 views
3

如何包含我的node_modules或为私有npm模块指定npm login/auth令牌?Google App Engine上的专用节点模块

看来,GAE不再允许node_modules文件夹被包含在内(参见this issue),并且似乎没有挂钩允许npm登录或设置令牌。

+0

你如何部署?使用nodejs运行时? –

+0

我正在使用nodejs运行时。我最终创建了一个自定义docker映像,它扩展了GAE基础映像,我可以控制npm install并为私有节点模块设置npm令牌。如果没有人有更好的答案,我会在今晚把它变成一个答案。 – mark

+0

这正是我建议你做的:-) –

回答

4

如果您在要部署的应用程序中包含本地的.npmrc文件,它将被复制到应用程序源中并在npm安装期间使用。您可以通过构建步骤创建该文件或从主目录中复制该文件。请参阅this npm article

的.npmrc文件应该是这样的:

//registry.npmjs.org/:_authToken=<token here> 

的Dockerfile我使用看起来像这样:

# Use the base App Engine Docker image, based on debian jessie. 
FROM gcr.io/google_appengine/base 

# Install updates and dependencies 
RUN apt-get update -y && apt-get install --no-install-recommends -y -q curl python build-essential git ca-certificates libkrb5-dev && \ 
    apt-get clean && rm /var/lib/apt/lists/*_* 

# Install the latest release of nodejs 
RUN mkdir /nodejs && curl https://nodejs.org/dist/v6.2.1/node-v6.2.1-linux-x64.tar.gz | tar xvzf - -C /nodejs --strip-components=1 
ENV PATH $PATH:/nodejs/bin 

COPY . /app/ 

WORKDIR /app 

# NODE_ENV to production so npm only installs needed dependencies 
ENV NODE_ENV production 

RUN npm install --unsafe-perm || \ 
    ((if [ -f npm-debug.log ]; then \ 
     cat npm-debug.log; \ 
    fi) && false) 

# start 
CMD ["npm", "start"] 
+0

我完成了同样的工作,但是使用标准的'FROM node:8' - 似乎App Engine的灵活模式只需要一个docker镜像,一切都将正常工作。 – nover