├── .editorconfig ├── .eslintrc.cjs ├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md ├── SUPPORT.md ├── dependabot.yml └── workflows │ ├── codeql-analysis.yml │ ├── lint.yml │ └── release.yml ├── .gitignore ├── .vscode ├── extensions.json └── settings.json ├── CHANGELOG.md ├── README.md ├── img ├── config.yml ├── render1591958322106.gif └── terminalgif.yaml ├── index.js ├── jest.config.js ├── lib ├── cli.js └── countries.json ├── license.txt ├── package-lock.json ├── package.json └── tests └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # For more information about the properties used in 2 | # this file, please see the EditorConfig documentation: 3 | # https://editorconfig.org/ 4 | 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | indent_size = 2 11 | indent_style = space 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | commonjs: true, 5 | es2020: true, 6 | "jest/globals": true, 7 | }, 8 | extends: ["eslint:recommended", "airbnb/base", "plugin:prettier/recommended"], 9 | parserOptions: { 10 | ecmaVersion: 12, 11 | }, 12 | rules: { 13 | "no-console": "off", 14 | }, 15 | plugins: ["jest"], 16 | }; 17 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at h5bp@htmlcssjavascript.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: https://contributor-covenant.org 46 | [version]: https://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Create HTML5 Boilerplate 2 | 3 | Please take a moment to review this document in order to make the contribution 4 | process easy and effective for everyone involved. 5 | 6 | Following these guidelines helps to communicate that you respect the time of 7 | the developers managing and developing this open source project. In return, 8 | they should reciprocate that respect in addressing your issue or assessing 9 | patches and features. 10 | 11 | ## Using the issue tracker 12 | 13 | The [issue tracker](https://github.com/h5bp/create-html5-boilerplate/issues) is 14 | the preferred channel for [bug reports](#bugs), [features requests](#features) 15 | and [submitting pull requests](#pull-requests), but please respect the following 16 | restrictions: 17 | 18 | - Please **do not** use the issue tracker for personal support requests (use 19 | [Stack Overflow](https://stackoverflow.com/questions/tagged/html5boilerplate)). 20 | 21 | - Please **do not** derail or troll issues. Keep the discussion on topic and 22 | respect the opinions of others. 23 | 24 | ## Bug reports 25 | 26 | A bug is a _demonstrable problem_ that is caused by the code in the repository. 27 | Good bug reports are extremely helpful - thank you! 28 | 29 | Guidelines for bug reports: 30 | 31 | 1. **Use the GitHub issue search** — check if the issue has already been 32 | reported. 33 | 34 | 2. **Check if the issue has been fixed** — try to reproduce it using the 35 | latest `master` or development branch in the repository. 36 | 37 | 3. **Isolate the problem** — ideally create a [reduced test 38 | case](https://css-tricks.com/reduced-test-cases/) and a live example. 39 | 40 | A good bug report shouldn't leave others needing to chase you up for more 41 | information. Please try to be as detailed as possible in your report. What is 42 | your environment? What steps will reproduce the issue? What browser(s) and OS 43 | experience the problem? What would you expect to be the outcome? All these 44 | details will help people to fix any potential bugs. 45 | 46 | Example: 47 | 48 | > Short and descriptive example bug report title 49 | > 50 | > A summary of the issue and the browser/OS environment in which it occurs. If 51 | > suitable, include the steps required to reproduce the bug. 52 | > 53 | > 1. This is the first step 54 | > 2. This is the second step 55 | > 3. Further steps, etc. 56 | > 57 | > `` - a link to the reduced test case 58 | > 59 | > Any other information you want to share that is relevant to the issue being 60 | > reported. This might include the lines of code that you have identified as 61 | > causing the bug, and potential solutions (and your opinions on their 62 | > merits). 63 | 64 | ## Feature requests 65 | 66 | Feature requests are welcome. But take a moment to find out whether your idea 67 | fits with the scope and aims of the project. It's up to _you_ to make a strong 68 | case to convince the project's developers of the merits of this feature. Please 69 | provide as much detail and context as possible. 70 | 71 | ## Pull requests 72 | 73 | Good pull requests - patches, improvements, new features - are a fantastic 74 | help. They should remain focused in scope and avoid containing unrelated 75 | commits. 76 | 77 | **Please ask first** before embarking on any significant pull request (e.g. 78 | implementing features, refactoring code, porting to a different language), 79 | otherwise you risk spending a lot of time working on something that the 80 | project's developers might not want to merge into the project. 81 | 82 | Please adhere to the coding conventions used throughout a project (indentation, 83 | accurate comments, etc.) and any other requirements (such as test coverage). 84 | 85 | **IMPORTANT**: By submitting a patch, you agree to allow the project 86 | owners to license your work under the terms of the [MIT License](LICENSE.txt). 87 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **I'm submitting a ...** 2 | 3 | - [ ] bug report 4 | - [ ] feature request 5 | - [ ] other (Please do not submit support requests here (below)) 6 | 7 | ## Notes 8 | 9 | * Please **do not** use the issue tracker for personal support requests (use 10 | [Stack Overflow](https://stackoverflow.com/questions/tagged/html5boilerplate)). 11 | 12 | * Please **do not** derail or troll issues. Keep the discussion on topic and 13 | respect the opinions of others. 14 | 15 | * Please **do not** open issues or pull requests regarding the code in 16 | [`.htaccess`](https://github.com/h5bp/server-configs-apache), 17 | [`jQuery`](https://github.com/jquery/jquery/), 18 | [`Modernizr`](https://github.com/Modernizr/Modernizr) or 19 | [`Normalize.css`](https://github.com/necolas/normalize.css) (open them in 20 | their respective repositories). 21 | 22 | ## Bug reports 23 | 24 | A bug is a _demonstrable problem_ that is caused by the code in the repository. 25 | Good bug reports are extremely helpful - thank you! 26 | 27 | Guidelines for bug reports: 28 | 29 | 1. **Use the GitHub issue search** — check if the issue has already been 30 | reported. 31 | 32 | We have a long history of sometimes _very_ detailed discussion of every line of code 33 | in the project. We want discussion, so it might still warrant an issue. It 34 | just helps to get the (sometimes extensive) context. 35 | 36 | 2. **Check if the issue has been fixed** — try to reproduce it using the 37 | latest `master` or development branch in the repository. 38 | 39 | 3. **Isolate the problem** — ideally create a [reduced test 40 | case](https://css-tricks.com/reduced-test-cases/) and a live example. 41 | 42 | A good bug report shouldn't leave others needing to chase you up for more 43 | information. Please try to be as detailed as possible in your report. What is 44 | your environment? What steps will reproduce the issue? What browser(s) and OS 45 | experience the problem? What would you expect to be the outcome? All these 46 | details will help people to fix any potential bugs. 47 | 48 | Example: 49 | 50 | > Short and descriptive example bug report title 51 | > 52 | > A summary of the issue and the browser/OS environment in which it occurs. If 53 | > suitable, include the steps required to reproduce the bug. 54 | > 55 | > 1. This is the first step 56 | > 2. This is the second step 57 | > 3. Further steps, etc. 58 | > 59 | > `` - a link to the reduced test case 60 | > 61 | > Any other information you want to share that is relevant to the issue being 62 | > reported. This might include the lines of code that you have identified as 63 | > causing the bug, and potential solutions (and your opinions on their 64 | > merits). 65 | 66 | ## Feature requests 67 | 68 | Feature requests are welcome. But take a moment to find out whether your idea 69 | fits with the scope and aims of the project. It's up to *you* to make a strong 70 | case to convince the project's developers of the merits of this feature. Please 71 | provide as much detail and context as possible. 72 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Types of changes 2 | 3 | - [ ] Bug fix (non-breaking change which fixes an issue) 4 | - [ ] New feature (non-breaking change which adds functionality) 5 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 6 | 7 | ## Checklist: 8 | 9 | 10 | - [ ] My code follows the code style of this project. 11 | - [ ] My change requires a change to the documentation. 12 | - [ ] I have updated the documentation accordingly. 13 | - [ ] I have read the **CONTRIBUTING** document. 14 | - [ ] I have added tests to cover my changes. 15 | - [ ] All new and existing tests passed. 16 | 17 | Pull requests should be thought of as a conversation. There will be some back and forth when trying to get code merged into this or any other project. With all but the simplest changes you can and should expect that the maintainers of the project will request changes to your code. Please be aware of that and check in after you open your PR in order to get your code merged in cleanly. 18 | 19 | Thanks! 20 | -------------------------------------------------------------------------------- /.github/SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | For personal support requests with HTML5 Boilerplate please use Stack Overflow 4 | ([`html5boilerplate`](https://stackoverflow.com/questions/tagged/html5boilerplate) tag). 5 | 6 | Please check the respective repository/website for support regarding the code in 7 | [`.htaccess`](https://github.com/h5bp/server-configs-apache), 8 | [`jQuery`](https://jquery.org/support/), 9 | [`Modernizr`](https://modernizr.com/) or 10 | [`Normalize.css`](https://github.com/necolas/normalize.css). 11 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: monthly 7 | versioning-strategy: increase 8 | - package-ecosystem: github-actions 9 | directory: "/" 10 | schedule: 11 | interval: monthly 12 | 13 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | name: "CodeQL" 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | # The branches below must be a subset of the branches above 8 | branches: [main] 9 | schedule: 10 | - cron: '0 22 * * 3' 11 | 12 | jobs: 13 | analyze: 14 | name: Analyze 15 | runs-on: ubuntu-latest 16 | permissions: 17 | actions: read 18 | contents: read 19 | security-events: write 20 | 21 | steps: 22 | - name: Checkout repository 23 | uses: actions/checkout@v4 24 | 25 | - name: Initialize CodeQL 26 | uses: github/codeql-action/init@v3 27 | with: 28 | languages: "javascript" 29 | 30 | - name: Perform CodeQL Analysis 31 | uses: github/codeql-action/analyze@v3 32 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Eslint 5 | 6 | on: 7 | push: 8 | branches: [main] 9 | pull_request: 10 | branches: [main] 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v4 18 | - name: Use Node.js ${{ matrix.node-version }} 19 | uses: actions/setup-node@v4 20 | with: 21 | node-version: "16.x" 22 | - run: npm install 23 | - run: npm run lint 24 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: publish npm 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | publish-npm: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - uses: actions/setup-node@v4 13 | with: 14 | node-version: 16 15 | registry-url: https://registry.npmjs.org/ 16 | - run: npm publish 17 | env: 18 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | out 3 | coverage -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "eslint.enable": true, 5 | "eslint.validate": ["javascript"] 6 | } 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.0 (October 22, 2020) 2 | 3 | - Prompt: Remove jQuery in < v8 ([#12](https://github.com/h5bp/create-html5-boilerplate/pull/24), [#24](https://github.com/h5bp/create-html5-boilerplate/pull/24)) 4 | - Readme fixes ([#23](https://github.com/h5bp/create-html5-boilerplate/pull/23), [#41](https://github.com/h5bp/create-html5-boilerplate/pull/41)) 5 | - Language selection prompt [#19](https://github.com/h5bp/create-html5-boilerplate/pull/19) 6 | - Check for empty folder [#22](https://github.com/h5bp/create-html5-boilerplate/pull/22) 7 | - Update dependencies 8 | 9 | ## 0.1.0 (May 25, 2020) 10 | 11 | - Initial Release 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Create HTML5 Boilerplate 2 | 3 | Quick start for HTML5 Boilerplate. Get up and running with one command. 4 | 5 | ## Getting Started 6 | 7 | You can get started using one of three options- `npx`, `npm init`, or 8 | `yarn create` 9 | 10 | Using `npx` 11 | 12 | ``` 13 | npx create-html5-boilerplate new-site 14 | cd new-site 15 | npm install 16 | npm start 17 | ``` 18 | 19 | Using `npm init` 20 | 21 | ``` 22 | npm init html5-boilerplate new-site 23 | cd new-site 24 | npm install 25 | npm start 26 | ``` 27 | 28 | Using yarn 29 | 30 | ``` 31 | yarn create html5-boilerplate new-site 32 | cd new-site 33 | yarn install 34 | yarn start 35 | ``` 36 | 37 | These commands are equivalent and do the following: 38 | 39 | 1. Download and install the latest version of HTML5 Boilerplate 40 | 2. Installs dependencies 41 | 3. Bundles site assets and start a web server using [Parcel](https://parceljs.org/) 42 | 4. Opens a web browser pointed to http://localhost:1234/ 43 | 44 | ## Requirements 45 | 46 | `create-html5-boilerplate` is cross-platform. It works wherever node and npm work. 47 | The only requirements are for `npx`, which requires npm version 5.2 or greater and 48 | `npm init` which requires an npm version greater than 6.0. If you're stuck on an 49 | older version of npm you can still use `create-html5-boilerplate` by running the 50 | following command to install the project globally. 51 | 52 | ``` 53 | npm install -g create-html5-boilerplate 54 | ``` 55 | 56 | Then you can use `create-html5-boilerplate` as in the following example 57 | 58 | ``` 59 | create-html5-boilerplate new-site 60 | cd new-site 61 | npm install 62 | npm start 63 | ``` 64 | 65 | ## Installing Specific Versions 66 | 67 | You can also install a specific version: 68 | 69 | ``` 70 | npx create-html5-boilerplate new-site --release=7.2.0 71 | cd new-site 72 | npm install 73 | npm start 74 | ``` 75 | 76 | ## CONTRIBUTING 77 | 78 | ### Setting Up a Local Copy 79 | 80 | 1. Clone the repo with `git clone https://github.com/h5bp/create-html5-boilerplate.git` 81 | 2. Run `npm install` in the root `create-html5-boilerplate` folder. 82 | 3. Run `npm link` to make npm run local copy instead of downloading from registry 83 | 4. Now you can use `npm init html5-boilerplate` and `npx create-html5-boilerplate` 84 | 85 | note: you can use `npx create-html5-boilerplate ./out/example` from `create-html5-boilerplate` without running `npm link` 86 | also its possible to run directly NodeJS entry point `node index.js ./out/example` or `npm start` 87 | `./out` is git ignored folder, so you should use this folder for tests. 88 | 89 | If you want to try out the end-to-end flow with the global CLI, you can do this too: 90 | 91 | ``` 92 | npx create-html5-boilerplate ./out/new-site 93 | cd new-site 94 | npm install 95 | npm start 96 | ``` 97 | 98 | ### Tests 99 | 100 | Tests are written using [jest](https://jestjs.io/) and located in `tests/test.js` 101 | run `npm test` 102 | 103 | run coverage reports `npm run coverage` 104 | -------------------------------------------------------------------------------- /img/config.yml: -------------------------------------------------------------------------------- 1 | # Specify a command to be executed 2 | # like `/bin/bash -l`, `ls`, or any other commands 3 | # the default is bash for Linux 4 | # or powershell.exe for Windows 5 | command: null 6 | # TODO: @vltansky change to /bin/bash -l 7 | 8 | # Specify the current working directory path 9 | # the default is the current working directory path 10 | cwd: null 11 | 12 | # Export additional ENV variables 13 | env: 14 | recording: true 15 | 16 | # Explicitly set the number of columns 17 | # or use `auto` to take the current 18 | # number of columns of your shell 19 | cols: auto 20 | 21 | # Explicitly set the number of rows 22 | # or use `auto` to take the current 23 | # number of rows of your shell 24 | rows: auto 25 | 26 | # Amount of times to repeat GIF 27 | # If value is -1, play once 28 | # If value is 0, loop indefinitely 29 | # If value is a positive number, loop n times 30 | repeat: 0 31 | 32 | # Quality 33 | # 1 - 100 34 | quality: 100 35 | 36 | # Delay between frames in ms 37 | # If the value is `auto` use the actual recording delays 38 | frameDelay: auto 39 | 40 | # Maximum delay between frames in ms 41 | # Ignored if the `frameDelay` isn't set to `auto` 42 | # Set to `auto` to prevent limiting the max idle time 43 | maxIdleTime: 2000 44 | 45 | # The surrounding frame box 46 | # The `type` can be null, window, floating, or solid` 47 | # To hide the title use the value null 48 | # Don't forget to add a backgroundColor style with a null as type 49 | frameBox: 50 | type: floating 51 | title: Terminalizer 52 | style: 53 | border: 0px black solid 54 | # boxShadow: none 55 | # margin: 0px 56 | 57 | # Add a watermark image to the rendered gif 58 | # You need to specify an absolute path for 59 | # the image on your machine or a URL, and you can also 60 | # add your own CSS styles 61 | watermark: 62 | imagePath: null 63 | style: 64 | position: absolute 65 | right: 15px 66 | bottom: 15px 67 | width: 100px 68 | opacity: 0.9 69 | 70 | # Cursor style can be one of 71 | # `block`, `underline`, or `bar` 72 | cursorStyle: block 73 | 74 | # Font family 75 | # You can use any font that is installed on your machine 76 | # in CSS-like syntax 77 | fontFamily: "Monaco, Lucida Console, Ubuntu Mono, Monospace" 78 | 79 | # The size of the font 80 | fontSize: 12 81 | 82 | # The height of lines 83 | lineHeight: 1 84 | 85 | # The spacing between letters 86 | letterSpacing: 0 87 | 88 | # Theme 89 | theme: 90 | background: "transparent" 91 | foreground: "#afafaf" 92 | cursor: "#c7c7c7" 93 | black: "#232628" 94 | red: "#fc4384" 95 | green: "#b3e33b" 96 | yellow: "#ffa727" 97 | blue: "#75dff2" 98 | magenta: "#ae89fe" 99 | cyan: "#708387" 100 | white: "#d5d5d0" 101 | brightBlack: "#626566" 102 | brightRed: "#ff7fac" 103 | brightGreen: "#c8ed71" 104 | brightYellow: "#ebdf86" 105 | brightBlue: "#75dff2" 106 | brightMagenta: "#ae89fe" 107 | brightCyan: "#b1c6ca" 108 | brightWhite: "#f9f9f4" 109 | -------------------------------------------------------------------------------- /img/render1591958322106.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/h5bp/create-html5-boilerplate/08d9c0ad09efca95d932359fe101363ca1b972bd/img/render1591958322106.gif -------------------------------------------------------------------------------- /img/terminalgif.yaml: -------------------------------------------------------------------------------- 1 | # The configurations that used for the recording, feel free to edit them 2 | config: 3 | # Specify a command to be executed 4 | # like `/bin/bash -l`, `ls`, or any other commands 5 | # the default is bash for Linux 6 | # or powershell.exe for Windows 7 | command: powershell.exe 8 | 9 | # Specify the current working directory path 10 | # the default is the current working directory path 11 | cwd: D:\projects 12 | 13 | # Export additional ENV variables 14 | env: 15 | recording: true 16 | 17 | # Explicitly set the number of columns 18 | # or use `auto` to take the current 19 | # number of columns of your shell 20 | cols: 134 21 | 22 | # Explicitly set the number of rows 23 | # or use `auto` to take the current 24 | # number of rows of your shell 25 | rows: 15 26 | 27 | # Amount of times to repeat GIF 28 | # If value is -1, play once 29 | # If value is 0, loop indefinitely 30 | # If value is a positive number, loop n times 31 | repeat: 0 32 | 33 | # Quality 34 | # 1 - 100 35 | quality: 100 36 | 37 | # Delay between frames in ms 38 | # If the value is `auto` use the actual recording delays 39 | frameDelay: auto 40 | 41 | # Maximum delay between frames in ms 42 | # Ignored if the `frameDelay` isn't set to `auto` 43 | # Set to `auto` to prevent limiting the max idle time 44 | maxIdleTime: 2000 45 | 46 | # The surrounding frame box 47 | # The `type` can be null, window, floating, or solid` 48 | # To hide the title use the value null 49 | # Don't forget to add a backgroundColor style with a null as type 50 | frameBox: 51 | type: floating 52 | title: Terminalizer 53 | style: 54 | border: 0px black solid 55 | # boxShadow: none 56 | # margin: 0px 57 | 58 | # Add a watermark image to the rendered gif 59 | # You need to specify an absolute path for 60 | # the image on your machine or a URL, and you can also 61 | # add your own CSS styles 62 | watermark: 63 | imagePath: null 64 | style: 65 | position: absolute 66 | right: 15px 67 | bottom: 15px 68 | width: 100px 69 | opacity: 0.9 70 | 71 | # Cursor style can be one of 72 | # `block`, `underline`, or `bar` 73 | cursorStyle: block 74 | 75 | # Font family 76 | # You can use any font that is installed on your machine 77 | # in CSS-like syntax 78 | fontFamily: "Monaco, Lucida Console, Ubuntu Mono, Monospace" 79 | 80 | # The size of the font 81 | fontSize: 12 82 | 83 | # The height of lines 84 | lineHeight: 1 85 | 86 | # The spacing between letters 87 | letterSpacing: 0 88 | 89 | # Theme 90 | theme: 91 | background: "transparent" 92 | foreground: "#afafaf" 93 | cursor: "#c7c7c7" 94 | black: "#232628" 95 | red: "#fc4384" 96 | green: "#b3e33b" 97 | yellow: "#ffa727" 98 | blue: "#75dff2" 99 | magenta: "#ae89fe" 100 | cyan: "#708387" 101 | white: "#d5d5d0" 102 | brightBlack: "#626566" 103 | brightRed: "#ff7fac" 104 | brightGreen: "#c8ed71" 105 | brightYellow: "#ebdf86" 106 | brightBlue: "#75dff2" 107 | brightMagenta: "#ae89fe" 108 | brightCyan: "#b1c6ca" 109 | brightWhite: "#f9f9f4" 110 | 111 | # Records, feel free to edit them 112 | records: 113 | - delay: 615 114 | content: "\e[2J\e[?25l\e[m\e[H\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\e[H\e]0;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\a\e[?25h" 115 | - delay: 8 116 | content: "\e[?25lWindows PowerShell\e[42X\e[42C\r\nCopyright (C) Microsoft Corporation. All rights reserved. \r\n\e[60X\e[60C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[6;1H\e[?25h" 117 | - delay: 50 118 | content: "\e[?25lPS D:\\projects> \e[?25h" 119 | - delay: 50 120 | content: "\e[?25l\e[?25h" 121 | - delay: 9 122 | content: "\e[93mn" 123 | - delay: 40 124 | content: "\e[?25l\e[m\e[?25h" 125 | - delay: 9 126 | content: "\e[?25l\e[93m\bnp\e[?25h" 127 | - delay: 98 128 | content: "\e[?25l\e[m\e[?25h" 129 | - delay: 9 130 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[?25h" 131 | - delay: 96 132 | content: "\e[?25l\e[m\e[?25h" 133 | - delay: 9 134 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m \b\e[?25h" 135 | - delay: 50 136 | content: "\e[?25l\e[?25h" 137 | - delay: 9 138 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m \e[?25h" 139 | - delay: 50 140 | content: "\e[?25l\e[?25h" 141 | - delay: 9 142 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m c\e[?25h" 143 | - delay: 50 144 | content: "\e[?25l\e[?25h" 145 | - delay: 9 146 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m cr\e[?25h" 147 | - delay: 81 148 | content: "\e[?25l\e[?25h" 149 | - delay: 9 150 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m cre\e[?25h" 151 | - delay: 16 152 | content: "\e[?25l\e[?25h" 153 | - delay: 8 154 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m crea\e[?25h" 155 | - delay: 50 156 | content: "\e[?25l\e[?25h" 157 | - delay: 9 158 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m creat\e[?25h" 159 | - delay: 50 160 | content: "\e[?25l\e[?25h" 161 | - delay: 9 162 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create\e[?25h" 163 | - delay: 83 164 | content: "\e[?25l\e[?25h" 165 | - delay: 10 166 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-\e[?25h" 167 | - delay: 50 168 | content: "\e[?25l\e[?25h" 169 | - delay: 10 170 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-h\e[?25h" 171 | - delay: 46 172 | content: "\e[?25l\e[?25h" 173 | - delay: 9 174 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-ht\e[?25h" 175 | - delay: 50 176 | content: "\e[?25l\e[?25h" 177 | - delay: 10 178 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-htm\e[?25h" 179 | - delay: 50 180 | content: "\e[?25l\e[?25h" 181 | - delay: 9 182 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html\e[?25h" 183 | - delay: 50 184 | content: "\e[?25l\e[?25h" 185 | - delay: 9 186 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5\e[?25h" 187 | - delay: 50 188 | content: "\e[?25l\e[?25h" 189 | - delay: 9 190 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-\e[?25h" 191 | - delay: 50 192 | content: "\e[?25l\e[?25h" 193 | - delay: 9 194 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-b\e[?25h" 195 | - delay: 50 196 | content: "\e[?25l\e[?25h" 197 | - delay: 9 198 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-bo\e[?25h" 199 | - delay: 50 200 | content: "\e[?25l\e[?25h" 201 | - delay: 9 202 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boi\e[?25h" 203 | - delay: 50 204 | content: "\e[?25l\e[?25h" 205 | - delay: 9 206 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boil\e[?25h" 207 | - delay: 67 208 | content: "\e[?25l\e[?25h" 209 | - delay: 9 210 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boile\e[?25h" 211 | - delay: 50 212 | content: "\e[?25l\e[?25h" 213 | - delay: 9 214 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boiler\e[?25h" 215 | - delay: 50 216 | content: "\e[?25l\e[?25h" 217 | - delay: 9 218 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerp\e[?25h" 219 | - delay: 115 220 | content: "\e[?25l\e[?25h" 221 | - delay: 9 222 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerpl\e[?25h" 223 | - delay: 55 224 | content: "\e[?25l\e[?25h" 225 | - delay: 8 226 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerpla\e[?25h" 227 | - delay: 50 228 | content: "\e[?25l\e[?25h" 229 | - delay: 9 230 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplat\e[?25h" 231 | - delay: 50 232 | content: "\e[?25l\e[?25h" 233 | - delay: 8 234 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate\e[?25h" 235 | - delay: 50 236 | content: "\e[?25l\e[?25h" 237 | - delay: 9 238 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate \e[?25h" 239 | - delay: 50 240 | content: "\e[?25l\e[?25h" 241 | - delay: 10 242 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate .\e[?25h" 243 | - delay: 50 244 | content: "\e[?25l\e[?25h" 245 | - delay: 9 246 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./\e[?25h" 247 | - delay: 50 248 | content: "\e[?25l\e[?25h" 249 | - delay: 10 250 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./n\e[?25h" 251 | - delay: 44 252 | content: "\e[?25l\e[?25h" 253 | - delay: 10 254 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./ne\e[?25h" 255 | - delay: 56 256 | content: "\e[?25l\e[?25h" 257 | - delay: 10 258 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new\e[?25h" 259 | - delay: 50 260 | content: "\e[?25l\e[?25h" 261 | - delay: 9 262 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new-\e[?25h" 263 | - delay: 50 264 | content: "\e[?25l\e[?25h" 265 | - delay: 9 266 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new-s\e[?25h" 267 | - delay: 50 268 | content: "\e[?25l\e[?25h" 269 | - delay: 9 270 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new-si\e[?25h" 271 | - delay: 91 272 | content: "\e[?25l\e[?25h" 273 | - delay: 9 274 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new-sit\e[?25h" 275 | - delay: 50 276 | content: "\e[?25l\e[?25h" 277 | - delay: 8 278 | content: "\e[?25l\e[93m\e[6;17Hnpx\e[m create-html5-boilerplate ./new-site\e[?25h" 279 | - delay: 600 280 | content: "\e[?25l\r\n\e[?25h" 281 | - delay: 21 282 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 283 | - delay: 10 284 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 285 | - delay: 59 286 | content: "\e[?25l\e]0;npm\a\e[?25h" 287 | - delay: 100 288 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 289 | - delay: 181 290 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 291 | - delay: 17 292 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 293 | - delay: 99 294 | content: "\e[?25l\e[HWindows PowerShell\e[116X\e[116C\r\nCopyright (C) Microsoft Corporation. All rights reserved.\e[77X\e[77C\r\n\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 295 | - delay: 197 296 | content: "\e[?25l\e[?25h" 297 | - delay: 9 298 | content: "\e[?25l\e[36m-\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 299 | - delay: 126 300 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 301 | - delay: 8 302 | content: "\e[?25l\e[36m\r\\\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 303 | - delay: 121 304 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 305 | - delay: 9 306 | content: "\e[?25l\e[36m\r|\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 307 | - delay: 121 308 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 309 | - delay: 8 310 | content: "\e[?25l\e[36m\r/\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 311 | - delay: 122 312 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 313 | - delay: 9 314 | content: "\e[?25l\e[36m\r-\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 315 | - delay: 123 316 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 317 | - delay: 8 318 | content: "\e[?25l\e[36m\r\\\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 319 | - delay: 121 320 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 321 | - delay: 9 322 | content: "\e[?25l\e[36m\r|\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 323 | - delay: 122 324 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 325 | - delay: 9 326 | content: "\e[?25l\e[36m\r/\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 327 | - delay: 121 328 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 329 | - delay: 9 330 | content: "\e[?25l\e[36m\r-\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 331 | - delay: 121 332 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 333 | - delay: 9 334 | content: "\e[?25l\e[36m\r\\\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 335 | - delay: 122 336 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 337 | - delay: 8 338 | content: "\e[?25l\e[36m\r|\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 339 | - delay: 123 340 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 341 | - delay: 9 342 | content: "\e[?25l\e[36m\r/\e[m Downloading html5-boilerplate version 'latest' to D:\\projects\\new-site\e[?25h" 343 | - delay: 71 344 | content: "\e[?25l\r\e[134X\e[134C\e[?25h" 345 | - delay: 6 346 | content: "\e[?25l\e[36m\r?\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m\e[115X\e[115C\e[36m\r\n>\e[m \e[4m\e[36mEnglish (en)\e[24m\e[m\e[118X\e[118C\r\n Enter custom\e[118X\e[118C\r\n Abkhaz (ab)\e[119X\e[119C\r\n Afar (aa)\e[121X\e[121C\r\n Afrikaans (af)\e[116X\e[116C\r\n Akan (ak)\e[121X\e[121C\r\n Albanian (sq)\e[117X\e[117C\r\n Amharic (am)\e[118X\e[118C\e[?25h\e[?25l\r\n Arabic (ar)\e[119X\e[119C\e[?25h\e[?25l\r\n ↓ Aragonese (an)\e[116X\e[116C\e[?25h" 347 | - delay: 400 348 | content: "\e[?25l\e[5;1H\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[?25h" 349 | - delay: 9 350 | content: "\e[?25l\e[36m\e[5;1H?\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m e\e[113X\e[113C\e[36m\r\n>\e[m \e[4m\e[36mEnglish (en)\e[24m\e[m\e[118X\e[118C\r\n Enter custom\e[118X\e[118C\r\n Aragonese (an)\e[116X\e[116C\r\n Armenian (hy)\e[117X\e[117C\r\n Assamese (as)\e[117X\e[117C\r\n Avestan (ae)\e[118X\e[118C\r\n Azerbaijani (az)\e[114X\e[114C\r\n Basque (eu)\e[119X\e[119C\r\n Belarusian (be)\e[115X\e[115C\r\n ↓ Bengali; Bangla (bn)\e[110X\e[110C\e[?25h" 351 | - delay: 98 352 | content: "\e[?25l\e[5;1H\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[?25h" 353 | - delay: 10 354 | content: "\e[?25l\e[36m\e[5;1H?\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m en\e[112X\e[112C\e[36m\r\n>\e[m \e[4m\e[36mEnglish (en)\e[24m\e[m\e[118X\e[118C\r\n Enter custom\e[118X\e[118C\r\n Armenian (hy)\e[117X\e[117C\r\n Bengali; Bangla (bn)\e[110X\e[110C\r\n Catalan; Valencian (ca)\e[107X\e[107C\r\n French (fr)\e[119X\e[119C\r\n Slovene (sl)\e[118X\e[118C\r\n Turkmen (tk)\e[118X\e[118C\r\n Venda (ve)\e[120X\e[120C\r\n ↓ Aragonese (an)\e[116X\e[116C\e[?25h" 355 | - delay: 200 356 | content: "\e[?25l\e[5;1H\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[?25h" 357 | - delay: 8 358 | content: "\e[?25l\e[36m\e[5;1H?\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m eng\e[111X\e[111C\e[36m\r\n>\e[m \e[4m\e[36mEnglish (en)\e[24m\e[m\e[118X\e[118C\r\n Bengali; Bangla (bn)\e[110X\e[110C\r\n Interlingua (ia)\e[114X\e[114C\r\n Interlingue (ie)\e[114X\e[114C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[?25h" 359 | - delay: 300 360 | content: "\e[?25l\e[5;1H\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[?25h" 361 | - delay: 9 362 | content: "\e[?25l\e[32m\e[5;1H√\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m English (en)\e[102X\e[102C\e[32m\r\n√\e[m html5-boilerplate@latest copied to D:\\projects\\new-site in 1.51 seconds . Have fun!\e[49X\e[49C\r\n\e[?25h" 363 | - delay: 9 364 | content: "\e[?25l\e[?25h" 365 | - delay: 9 366 | content: "\e[?25l\e[H\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\e[32m\r\n√\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m English (en)\e[102X\e[102C\e[32m\r\n√\e[m html5-boilerplate@latest copied to D:\\projects\\new-site in 1.51 seconds . Have fun!\e[49X\e[49C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 367 | - delay: 10 368 | content: "\e[?25l\e[H\e[134X\e[134C\r\nTry the new cross-platform PowerShell https://aka.ms/pscore6\e[74X\e[74C\r\n\e[134X\e[134C\r\nPS D:\\projects> \e[93mnpx\e[m create-html5-boilerplate ./new-site\e[79X\e[79C\e[32m\r\n√\e[m \e[1m\e[97mSelect language\e[m \e[90m»\e[m English (en)\e[102X\e[102C\e[32m\r\n√\e[m html5-boilerplate@latest copied to D:\\projects\\new-site in 1.51 seconds . Have fun!\e[49X\e[49C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\r\n\e[134X\e[134C\e[7;1H\e[?25h" 369 | - delay: 8 370 | content: "\e[?25l\e]0;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\a\e[?25h" 371 | - delay: 17 372 | content: "\e[?25lPS D:\\projects> \e[?25h" 373 | - delay: 2000 374 | content: "\e[?25h" 375 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // eslint-disable-next-line import/extensions 3 | import cli from "./lib/cli.js"; 4 | 5 | cli(process.argv.slice(2)).catch(console.error); 6 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | transform: {}, 3 | runner: "jest-light-runner", 4 | }; 5 | -------------------------------------------------------------------------------- /lib/cli.js: -------------------------------------------------------------------------------- 1 | import os from "os"; 2 | import path from "path"; 3 | import yargsParser from "yargs-parser"; 4 | import chalk from "chalk"; 5 | import inquirer from "inquirer"; 6 | import fuzzy from "fuzzy"; 7 | import ora from "ora"; 8 | import pacote from "pacote"; 9 | import glob from "fast-glob"; 10 | import fs from "fs-extra"; 11 | import elapsed from "elapsed-time-logger"; 12 | import compareVersions from "compare-versions"; 13 | import inqurerAutocompletePrompt from "inquirer-autocomplete-prompt"; 14 | 15 | const extract = (a, b, c) => pacote.extract(a, b, c); 16 | 17 | const packageName = "html5-boilerplate"; 18 | const tempDir = `${os.tmpdir()}/${packageName}-staging`; 19 | 20 | let spinner; 21 | inquirer.registerPrompt("autocomplete", inqurerAutocompletePrompt); 22 | 23 | const checkFolder = async (targetDir, argv) => { 24 | const folderExists = await fs.pathExists(targetDir); 25 | if (!folderExists || argv.yes === true) { 26 | return true; 27 | } 28 | const folderFiles = await fs.readdir(targetDir); 29 | if (folderFiles.length !== -1) { 30 | const { override } = await inquirer.prompt({ 31 | type: "confirm", 32 | name: "override", 33 | message: `${targetDir} is not an empty folder, proceed?`, 34 | default: true, 35 | }); 36 | return override; 37 | } 38 | return true; 39 | }; 40 | 41 | const onLoad = async (targetDir, version, argv) => { 42 | // see https://github.com/mrmlnc/fast-glob#how-to-write-patterns-on-windows 43 | const npmIgnoreFiles = await glob( 44 | `${targetDir.replace(/\\/g, "/")}/**/.npmignore`, 45 | ); 46 | await Promise.all( 47 | // eslint-disable-next-line arrow-body-style 48 | npmIgnoreFiles.map((fileName) => { 49 | return fs.rename( 50 | fileName, 51 | fileName.replace(/\.npmignore$/, ".gitignore"), 52 | ); 53 | }), 54 | ); 55 | const skipPrompts = argv.yes === true; 56 | 57 | if (skipPrompts) { 58 | return; 59 | } 60 | const langsList = JSON.parse( 61 | await fs.readFile(new URL("./countries.json", import.meta.url)), 62 | ); 63 | 64 | const langListMap = {}; 65 | const langListOut = []; 66 | /* istanbul ignore if */ 67 | if (!argv.lang) { 68 | langsList.forEach(({ title, value }) => { 69 | const text = `${title} (${value})`; 70 | langListMap[text] = value; 71 | langListOut.push(text); 72 | }); 73 | langListOut.splice(1, 0, "Enter custom"); 74 | } 75 | spinner.stop(); 76 | const { langChoice, customLang, removeJquery } = await inquirer.prompt([ 77 | { 78 | type: "autocomplete", 79 | name: "langChoice", 80 | message: "Select language", 81 | when: !argv.lang, 82 | source: async (answers, input = "") => 83 | fuzzy.filter(input, langListOut).map(({ original }) => original), 84 | }, 85 | { 86 | type: "input", 87 | name: "customLang", 88 | message: "Enter custom language code", 89 | // eslint-disable-next-line 90 | when: ({ langChoice }) => !argv.lang && langChoice === langListOut[1], 91 | }, 92 | { 93 | type: "confirm", 94 | name: "removeJquery", 95 | message: "Remove jQuery?", 96 | when: version !== "latest" && compareVersions(version, "8.0.0"), 97 | default: true, 98 | }, 99 | ]); 100 | spinner.start(); 101 | const lang = argv.lang || langListMap[langChoice] || customLang || ""; 102 | const removeJqueryFlag = removeJquery !== undefined ? removeJquery : false; 103 | try { 104 | const indexFile = `${targetDir}/index.html`; 105 | const sourceHTML = await fs.readFile(indexFile, "utf-8"); 106 | let resultHTML = sourceHTML.replace( 107 | /(window\.jQuery.*<\/script>|