mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-03-09 17:09:05 -05:00
fix: underscore escaping for dotfiles (#1737)
* WIP: fix undersocre escaping for dotfiles (fix #1732) * Fix charAt * adding a short explanation to the docs. * improved wording
This commit is contained in:
committed by
Guillaume Chau
parent
286d75ea12
commit
a9aa3decf6
@@ -235,6 +235,30 @@ export default {
|
||||
<%# END_REPLACE %>
|
||||
```
|
||||
|
||||
#### Filename edge cases
|
||||
|
||||
If you want to render a template file that either begins with a dot (i.e. `.env`) you will have to follow a specific naming convention, since dotfiles are ignored when publishing your plugin to npm:
|
||||
```
|
||||
# dotfile templates have to use an underscore instead of the dot:
|
||||
|
||||
/generator/template/_env
|
||||
|
||||
# When calling api.render('./template'), this will be rendered in the project folder as:
|
||||
|
||||
.env
|
||||
```
|
||||
Consequently, this means that you also have to follow a special naming convention if you want to render file whose name actually begins with an underscore:
|
||||
```
|
||||
# such templates have to use two underscores instead of the dot:
|
||||
|
||||
/generator/template/__variables.scss
|
||||
|
||||
# When calling api.render('./template'), this will be rendered in the project folder as:
|
||||
|
||||
_variables.scss
|
||||
```
|
||||
|
||||
|
||||
### Prompts
|
||||
|
||||
#### Prompts for Built-in Plugins
|
||||
|
||||
@@ -138,9 +138,12 @@ class GeneratorAPI {
|
||||
let filename = path.basename(rawPath)
|
||||
// dotfiles are ignored when published to npm, therefore in templates
|
||||
// we need to use underscore instead (e.g. "_gitignore")
|
||||
if (filename.charAt(0) === '_') {
|
||||
if (filename.charAt(0) === '_' && filename.charAt(1) !== '_') {
|
||||
filename = `.${filename.slice(1)}`
|
||||
}
|
||||
if (filename.charAt(0) === '_' && filename.charAt(1) === '_') {
|
||||
filename = `${filename.slice(1)}`
|
||||
}
|
||||
const targetPath = path.join(path.dirname(rawPath), filename)
|
||||
const sourcePath = path.resolve(source, rawPath)
|
||||
const content = renderFile(sourcePath, data, ejsOptions)
|
||||
|
||||
Reference in New Issue
Block a user