All Projects → alvim → vtex-cms-sauce

alvim / vtex-cms-sauce

Licence: MIT license
VTEX package for handling CMS requests.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to vtex-cms-sauce

XUnityDeploy
Compile Unity to iOS[Android] client
Stars: ✭ 18 (-28%)
Mutual labels:  deploy
nucked-truth-of-files
HollyJS Moscow
Stars: ✭ 14 (-44%)
Mutual labels:  files
files-io
Read many files with node
Stars: ✭ 19 (-24%)
Mutual labels:  files
dry
Dry is a new template engine and language, and is a superset of Shopify's Liquid, with first-class support for advanced inheritance features, and more. From the creators of Enquirer, Assemble, Remarkable, and Micromatch.
Stars: ✭ 66 (+164%)
Mutual labels:  templates
Prism-Templates
Prism Templates using the DotNet New cli
Stars: ✭ 13 (-48%)
Mutual labels:  templates
heroku-deploy
A simple action to build, push and deploy your dockerized app to your Heroku Application
Stars: ✭ 40 (+60%)
Mutual labels:  deploy
lumen-file-manager
File manager module for the Lumen PHP framework.
Stars: ✭ 40 (+60%)
Mutual labels:  files
CP-Templates
Competitive Programming Templates
Stars: ✭ 28 (+12%)
Mutual labels:  templates
quickstart-docker-git
Boostrap projects with a Dockerfile and a folder structure that works.
Stars: ✭ 47 (+88%)
Mutual labels:  templates
glitchub
A step by step guide on how to keep a Glitch project in sync with a GitHub repo
Stars: ✭ 31 (+24%)
Mutual labels:  deploy
dirdf
R package: dirdf - Extracts Metadata from Directory and File Names
Stars: ✭ 57 (+128%)
Mutual labels:  files
template-python
Template repository for Python projects
Stars: ✭ 20 (-20%)
Mutual labels:  templates
marketplace-feedback
This repository is for feedback regarding NativeScript Marketplace. Use the issues system here to submit feature requests, vote for existing ones or report bugs.
Stars: ✭ 16 (-36%)
Mutual labels:  templates
yogurl
Serve files and code over HTTP in one command. The CLI for http://yogurl.io
Stars: ✭ 45 (+80%)
Mutual labels:  files
xtuff
A CLI to generate stuff easy! (components, services, etc...)
Stars: ✭ 28 (+12%)
Mutual labels:  files
ladep
Ladep is the world's best deployer for Laravel framework. It's the best way to deploy your Laravel projects.
Stars: ✭ 46 (+84%)
Mutual labels:  deploy
takomo
Organize, parameterize and deploy your CloudFormation stacks
Stars: ✭ 27 (+8%)
Mutual labels:  deploy
glob-fs
file globbing for node.js. speedy and powerful alternative to node-glob. This library is experimental and does not work on windows!
Stars: ✭ 54 (+116%)
Mutual labels:  files
crux.land
crux.land is a free registry service meant for hosting small (≤ 20kB) single deno scripts.
Stars: ✭ 50 (+100%)
Mutual labels:  deploy
AzureDevOpsPipelines-Templates
This project shows how to use YAML templates in Azure DevOps Pipelines.
Stars: ✭ 35 (+40%)
Mutual labels:  templates

VTEX-CMS-Sauce

VTEX CMS Sauce was created to allow a better deploying experience to VTEX stores. You can use it to upload several templates and files in some seconds, as an alternative to the old VTEX portal.

Getting started

  1. npm install vtex-cms-sauce.

  2. Create your api-sauced cms handler:

import { create } from 'vtex-cms-sauce'
const cms = create('https://STORE_NAME.vtexcommercestable.com.br')
...
  1. Insert your VTEX ID authentication cookie when prompted. NOTE: You must have access to the store you're trying to work on.

Methods

Save Template

cms.saveTemplate(templateName, HTML, isSub = false)

  • templateName {String} - From this string, the templateId will be created in background.
  • HTML {String} - String containing the HTML template.
  • isSub {Boolean} - Pass true if subtemplate
Example
const HTML = `<!DOCTYPE html>
<head>
  <title>VTEX</title>
</head>
<body>
  <h1>Hello, World!</h1>
</body>
`
cms
  .saveTemplate('Home', HTML)
  .then(console.log)
  .catch(console.error)

Save Shelf Template

cms.saveShelfTemplate(templateName, HTML, shelfClass)

  • templateName {String} - From this string, the templateId will be created in background.
  • HTML {String} - String containing the HTML template.
  • shelfClass {String} - Classname of shelf container
Example
const HTML = `
<div class="product">
  Product
</div>
`
cms
  .saveShelfTemplate('MainShelf', HTML, 'main-shelf')
  .then(console.log)
  .catch(console.error)

Save File

cms.saveFile(filepath)

  • filepath {String} - Path of file to be uploaded
Example
cms
  .saveFile('/dist/background.png')
  .then(console.log)
  .catch(console.error)

Publish script example

const path = require('path'),
    fs = require('fs'),
    create = require('vtex-cms-sauce').create,
    pjson = require('../package.json'),
    projectVars = require('../config/variables')

const cms = create(`https://${projectVars.STORE_ID}.vtexcommercestable.com.br`)
const appDirectory = fs.realpathSync(process.cwd())
const resolveApp = (relativePath) => path.resolve(appDirectory, relativePath)
const templatePrefix = projectVars.TEMPLATE_PREFIX

const templatesDir = resolveApp('dist/templates')
const subtemplatesDir = resolveApp('dist/subtemplates')
const shelvesDir = resolveApp('dist/shelves')
const filesDir = resolveApp('dist/arquivos')

const getFiles = dir => fs.readdirSync(dir).filter(str => str[0] !== '_')

const sendFiles = (dir, type = 'template') => new Promise(async (resolve, reject) => {
  try {
    let logs = ''
    const files = fs.readdirSync(dir).filter(str => str[0] !== '_')

    for (let i = 0; i < files.length; i++) {
      let log
      let file = files[i]
      let content = fs.readFileSync(`${dir}/${file}`, 'utf8')

      if (type === 'template') log = await cms.saveTemplate(templatePrefix + file.replace('.html', '').replace('index', 'Home'), content)
      else if (type === 'subtemplate') log = await cms.saveTemplate(templatePrefix + file.replace('.html', ''), content, true)
      else if (type === 'shelf') log = await cms.saveShelfTemplate(templatePrefix + file.replace('.html', ''), content, 'prateleira')
      else if (type === 'file') log = await cms.saveFile(`${dir}/${file}`)

      logs += `${log}\n`
    }

    console.log(logs)
    resolve(sendFiles)
  } catch(err) {
    console.error('Error while sending files.')
    reject(sendFiles)
  }
})

sendFiles(templatesDir, 'template')
  .then(() => sendFiles(subtemplatesDir, 'subtemplate'))
  .then(() => sendFiles(shelvesDir, 'shelf'))
  .then(() => sendFiles(filesDir, 'file'))

License

MIT © Mauricio Alvim

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].