Миграция CPM Nilppm
Рекомендуется перейти кNILPPMЗагрузите последнюю версию. Эта цена за тысячу показов больше не поддерживается.
Что такое цена за тысячу показов
CPM — это набор облегченных и базовых функций частного источника управления пакетами Node. Он разработан на основе архитектуры rex от clusic и обладает характеристиками балансировки нагрузки процессов. В основном он предоставляет полный набор простых режимов установки.Пользователям нужно только клонировать этот проект на локальный сервер и изменить файлы в папке конфигурации для запуска. Его источник данных основан на базе данных mysql и кэше Redis (поддерживает кластер Redis), что может эффективно повысить скорость загрузки пакетов NPM. Он также имеет функцию настройки доступа к пользовательской системе, позволяя предприятиям получать независимый доступ к своей собственной пользовательской системе, и может определять полномочия пользователя на отправку частных пакетов в соответствии с областями действия пользователя.
Документация
Пожалуйста, перейдите для получения подробной информацииздесь
предварительный просмотр
строить
Обязательными условиями для построения CPM являются:
- Nodejs >= 8.0.0
- MySQL >= 5.6.16
- Redis без ограничений
Сначала настройте указанную выше среду.
скачать
нам нужно отGithubСкачайте нашу программу.
$ git clone https://github.com/cevio/cpm.git
Загрузите стабильную основную ветку, другие ветки предназначены только для разработки, загрузка не рекомендуется. Открыть после загрузкиdatabase.sql
файл для создания базы данных mysql.
полагаться
Установите необходимые зависимости, чтобы мы могли убедиться, что программа может запускаться.
$ npm i -g @clusic/cli pm2
$ cd cpm
$ npm i
@clusic/cli
Это инструмент разработки для классической архитектуры.
Разработка и отладка
$ npm run dev
После установки зависимостей мы можем запустить программу. Но вы найдете ошибку, потому что мы не указали систему аутентификации пользователя.
Error: You should setup your own `UserService` first
at module.exports (/Users/shenyunjie/code/mzftech/cpm/app.bootstrap.js:7:11)
at WorkerService.createService (/Users/shenyunjie/code/mzftech/cpm/node_modules/@clusic/rex/lib/app.js:106:15)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:11)
at startup (internal/bootstrap/node.js:285:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
Пожалуйста, не нервничайте, это вполне нормально.
Изменить настройку
Есть два места, где вам нужно изменить конфигурацию:
-
config/config.{env}.js
{env}
Указывает ваши переменные среды, общее развитиеconfig.development.js
, производственная средаconfig.production.js
. Вы можете свободно изменять конфигурацию параметров. УведомлениеregistryHost
Свойства должны быть изменены на ваши собственныеhttp://127.0.0.1:7002
, в противном случае пакет загрузки сообщит об ошибке. Если он находится в сети, измените его непосредственно на свое доменное имя, напримерhttp://npm.example.com
. -
config/plugin.{env}.js
{env}
То же. Обычно он используется для настройки данных плагина, здесь нам нужно изменить его в соответствии со средой.mysql
а такжеredis
конфигурация данных. Обратите внимание: если Redis должен поддерживать режим кластера, настройте следующую конфигурацию Redis.options
Просто запрограммируйте массив эквивалентных структур данных.
После завершения вышеуказанной модификации нам нужно только поддержать пользователя.
Пользовательская система
Пользовательская система разделена на две функции, которые необходимо реализовать:
-
Login()
функция проверки входа -
User()
Функция запроса пользователя
Нам нужно запустить команду:
$ clusic add authorization --service
процедурныйapp/service/
Следующее автоматически создаст файл с именемauthorization.js
, этот файл является нашим пользовательским системным файлом.
Чтобы протестировать запуск, мы можем напрямую скопировать следующий код, чтобы быстро создать пользовательскую системную функцию:
const { ContextComponent } = require('@clusic/method');
module.exports = class AuthorizationService extends ContextComponent {
constructor(ctx) {
super(ctx);
}
async Login(account, password) {
return {
account: account,
name: account,
email: account + '@cpm.com',
avatar: 'https://i.loli.net/2017/08/21/599a521472424.jpg',
scopes: ['@' + account, '@html5', '@node'],
extra: {}
}
}
async User(account) {
return {
account: account,
name: account,
email: account + '@cpm.com',
avatar: 'https://i.loli.net/2017/08/21/599a521472424.jpg',
scopes: ['@' + account, '@html5', '@node'],
extra: {}
}
}
};
После сохранения вы можете запустить просмотр следующей командой в корневом каталоге проекта:
$ npm run dev
Открытьhttp://127.0.0.1:7002
чтобы увидеть нашу страницу. Поздравляем, теперь вы можете использовать цену за тысячу показов.
Поддержка команд
CPM поддерживает следующие комбинации команд:
$ npm login --registry=http://npm.test.cn
$ npm logout --registry=http://npm.test.cn
$ npm install (with no args, in package dir) --registry=http://npm.test.cn
$ npm install [<@scope>/]<name> --registry=http://npm.test.cn
$ npm install [<@scope>/]<name>@<tag> --registry=http://npm.test.cn
$ npm install [<@scope>/]<name>@<version> --registry=http://npm.test.cn
$ npm install [<@scope>/]<name>@<version range> --registry=http://npm.test.cn
$ npm install <git-host>:<git-user>/<repo-name> --registry=http://npm.test.cn
$ npm install <git repo url> --registry=http://npm.test.cn
$ npm install <tarball file> --registry=http://npm.test.cn
$ npm install <tarball url> --registry=http://npm.test.cn
$ npm install <folder> --registry=http://npm.test.cn
$ npm update [-g] [<pkg>...] --registry=http://npm.test.cn
$ npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional|--no-save] --registry=http://npm.test.cn
$ npm publish [<tarball>|<folder>] [--tag <tag>] [--otp otpcode] [--dry-run] --registry=http://npm.test.cn
$ npm unpublish [<@scope>/]<pkg>[@<version>] --registry=http://npm.test.cn
$ npm whoami [--registry <registry>] --registry=http://npm.test.cn
$ npm owner add <user> [<@scope>/]<pkg> --registry=http://npm.test.cn
$ npm owner rm <user> [<@scope>/]<pkg> --registry=http://npm.test.cn
$ npm owner ls [<@scope>/]<pkg> --registry=http://npm.test.cn
$ npm deprecate <pkg>[@<version>] <message> --registry=http://npm.test.cn
$ npm view [<@scope>/]<name>[@<version>] --registry=http://npm.test.cn
$ npm dist-tag add <pkg>@<version> [<tag>] --registry=http://npm.test.cn
$ npm dist-tag rm <pkg> <tag> --registry=http://npm.test.cn
$ npm dist-tag ls [<pkg>] --registry=http://npm.test.cn
$ npm access public [<package>] --registry=http://npm.test.cn
$ npm access restricted [<package>] --registry=http://npm.test.cn
Для внутренних приватных пакетов этих команд достаточно.Если вам нужно расширить, вы можете расширить его самостоятельно, или вGithubСообщите мне о проблеме, и я рассмотрю возможность добавления обновления в случае необходимости.
Упрощенная команда
Записывать --registry=http://npm.test.cn после каждой команды неудобно, поэтому мы можем сгенерировать команду с именем cpm, чтобы упростить ее. ты можешь пройтиyeomanНачните создавать команду CPM:
const childProcess = require('child_process');
const argv = process.argv.slice(2);
argv.push('--registry=http://npm.test.cn');
childProcess.spawn('npm', argv, { stdio: 'inherit' });
Пожалуйста, измените вышеhttp://npm.test.cn
адрес для вашего собственного обслуживания.
Принцип заключается в том, что когда мы проходимcpm
команда вместо этогоnpm
Когда команда плюс команда в конце самой--registry=http://npm.test.cn
Укажите на наш реестр.
мы можем использоватьcpm
заменятьnpm
. Например
$ cpm login
$ cpm install vue
$ cpm publish
Есть много других способов упростить команду, вы можете скачатьnpm install nrm -g
Подождите, чтобы переключиться.
Углубленная пользовательская система
Выше есть строка тестового кода, давайте проанализируем ее. либоLogin
ещеUser
Все функции возвращают следующие структуры данных:
- account
string
Учетная запись пользователя, уникальная. - name
string
имя пользователя - email
string
Почтовый ящик пользователя - avatar
string
изображение профиля - scopes
array
Массив закрытых полей пользователя
Что касаетсяextra
Это дополнительный параметр, который может быть передан по желанию и действует в веб-интерфейсе. а такжеscope
, вы можете предоставлять разным пользователям загружаемыеscopes
объем.
результаты области действия выполняются пользователем
cpm login
вступает в силу позже. Если вы изменили код, пользователю необходимо снова войти в систему, чтобы изменения вступили в силу.
онлайн
Среда онлайн-генерации должна бытьproduction
Только после того, как настройка будет завершена, вы сможете выйти в интернет.После того, как вы доберетесь до сервера, выполните команду:
$ npm run start
возобновить
Учитывая, что у общего предприятия есть свой гитлаб, конечно, он будет клонировать копию на свой собственный склад, поэтому, пожалуйста, выполните его после клонирования.rm -rf .git
, чтобы очистить ссылки на исходный репозиторий. Вы можете отправить эту программу в свой собственный репозиторий. При обновлении просто запустите
npm run update
После выполнения этой команды мы скачаем код основной ветки с гитхаба в режиме zip-пакета и перезапишем его локально Конечно, это полный охват. Благодаря наличию вашего git-репозитория вы можете сравнить, какие файлы были изменены.Вы можете отменить или обработать содержимое файлов, не входящих в app/ самостоятельно, что обычно является конфигурациями. Затем отправьте изменения и отправьте их онлайн.
Если он онлайн, конечноgit pull
Извлеките файл, который вы обновили локально, а затем передайте команду:
$ npm run restart
благодарный
Благодарим вас за использование CPM. Если у вас есть какие-либо вопросы, задайте вопрос, и я помогу ответить.