فهرست منبع

npm install removes older plugins

Fixes #5
Girish Ramakrishnan 6 سال پیش
والد
کامیت
0ab2027f52
2فایلهای تغییر یافته به همراه10 افزوده شده و 3 حذف شده
  1. 5 1
      Dockerfile
  2. 5 2
      start.sh

+ 5 - 1
Dockerfile

@@ -8,12 +8,16 @@ ADD config.json.template /app/code
 RUN cp /app/code/install/package.json /app/code/package.json
 RUN npm install --production
 
+# ~/.config is for npm update to work
 RUN mv /app/code/node_modules /app/code/node_modules_copy && ln -s /run/nodebb/node_modules /app/code/node_modules && \
+    mv /app/code/package-lock.json /app/code/package-lock.json.copy && ln -s /run/nodebb/package-lock.json /app/code/package-lock.json && \
+    mv /app/code/package.json /app/code/package.json.copy && ln -s /run/nodebb/package.json /app/code/package.json && \
 	mv /app/code/public /app/code/public_template && ln -s /run/nodebb/public /app/code/public && \
 	rm -rf /app/code/logs && ln -sf /run/nodebb/logs /app/code/logs && \
 	ln -s /run/nodebb/config.json /app/code/config.json && \
 	rm -rf /app/code/build && ln -s /run/nodebb/build /app/code/build && \
-	rm -rf /home/cloudron/.npm && ln -s /run/nodebb/npm /home/cloudron/.npm
+	rm -rf /home/cloudron/.npm && ln -s /run/nodebb/npm /home/cloudron/.npm && \
+	rm -rf /home/cloudron/.config && ln -s /run/nodebb/config /home/cloudron/.config
 
 ADD start.sh /app/code/start.sh
 

+ 5 - 2
start.sh

@@ -5,7 +5,7 @@ set -eu
 mongo_cli="mongo ${MONGODB_HOST}:${MONGODB_PORT}/${MONGODB_DATABASE} -u ${MONGODB_USERNAME} -p ${MONGODB_PASSWORD}"
 
 echo "=> Creating directories"
-mkdir -p /app/data/public/uploads /run/nodebb/logs /run/nodebb/public /run/nodebb/node_modules /run/nodebb/npm /run/nodebb/build
+mkdir -p /app/data/public/uploads /run/nodebb/logs /run/nodebb/public /run/nodebb/node_modules /run/nodebb/npm /run/nodebb/build /run/nodebb/config
 
 export NODE_ENV=production
 export NODE_PATH=/app/code/node_modules
@@ -13,6 +13,8 @@ export NODE_PATH=/app/code/node_modules
 # Some plugins write stuff into node_modules. Not nice :/
 echo "=> Moving node_modules"
 cp -rf /app/code/node_modules_copy/* /run/nodebb/node_modules
+cp /app/code/package-lock.json.copy /run/nodebb/package-lock.json
+cp /app/code/package.json.copy /run/nodebb/package.json
 
 if [[ -z "$(ls -A /run/nodebb/public)" ]]; then
     echo "=> Copying public files"
@@ -73,7 +75,8 @@ echo "=> Checking plugins to be installed"
 for plugin in $(./nodebb plugins | grep 'nodebb-' | cut -f3 -d' '); do
     if [[ ! -d "/app/code/node_modules/${plugin}" ]]; then
         echo "Could not find plugin ${plugin}. Installing it"
-        cd /app/code && /usr/local/bin/gosu cloudron:cloudron npm install "${plugin}"
+        # note that without --save, npm install will remove the previous plugins!
+        cd /app/code && /usr/local/bin/gosu cloudron:cloudron npm install --save "${plugin}"
     fi
 done