Novo projeto
napi new cria um projeto a partir de um template externo mantido, renomeia o
pacote e o crate Rust, filtra os targets e jobs de CI, grava uma faixa de engine
do Node.js derivada do nível de Node-API selecionado e aplica a licença e as
configurações de geração de tipos.
WARNING
O Git precisa estar instalado e o GitHub deve estar acessível. O destino não pode ser um arquivo existente nem um diretório que já contenha arquivos.
Uso
A CLI é interativa por padrão:
napi new <path>
O caminho pode ser omitido; nesse caso, o primeiro prompt solicita esse valor.
Use --no-interactive para automação:
napi new cool \
--name @scope/cool \
--min-node-api 8 \
--targets x86_64-unknown-linux-gnu \
--targets aarch64-apple-darwin \
--no-interactive
Chamadas programáticas nunca abrem prompts. Informe path e quaisquer valores
que não sejam os padrões de forma explícita:
import { NapiCli } from '@napi-rs/cli'
await new NapiCli().new({
path: 'cool',
name: '@scope/cool',
packageManager: 'pnpm',
targets: ['x86_64-unknown-linux-gnu', 'aarch64-apple-darwin'],
})
Prompts interativos
Quando --interactive está habilitado, o comando pergunta o nome do pacote, o
nível mínimo de Node-API, os targets, a licença, se deve gerar declarações
TypeScript e se deve configurar o GitHub Actions. Passe --package-manager pnpm
antes dos prompts se quiser o template pnpm; o gerenciador de pacotes não é uma
pergunta interativa.
Opções
Opções booleanas aceitam o prefixo --no-, como --no-interactive,
--no-enable-type-def e --no-enable-github-actions.
| Opção | Sintaxe da CLI | Tipo | Obrigatória | Padrão | Descrição |
|---|---|---|---|---|---|
path |
<path> |
string |
Sim para uso não interativo/programático | Diretório de destino vazio, resolvido a partir do diretório de trabalho atual. | |
interactive |
--interactive,-i |
boolean |
Não | true |
Solicita as informações do projeto. Esta opção existe apenas na CLI; use --no-interactive em automações. |
name |
--name,-n |
string |
Não | nome do diretório de destino | Nome do pacote no package.json. Nomes com escopo são recomendados para publicação. |
minNodeApiVersion |
--min-node-api,-v |
number |
Não | 4 |
Nível mínimo de Node-API usado tanto no requisito de versão do Node.js do pacote gerado quanto na feature da dependência napi. |
packageManager |
--package-manager |
yarn | pnpm |
Não | yarn |
Seleciona o template mantido para Yarn ou pnpm. O próprio template fixa a versão do gerenciador. |
license |
--license,-l |
string |
Não | MIT |
Licença gravada no package.json. |
targets |
--targets,-t |
string[] |
Não | [] |
Target triples que serão mantidos. Repita a opção para vários targets. |
enableDefaultTargets |
--enable-default-targets |
boolean |
Não | true |
No modo não interativo, usa o conjunto padrão quando targets está vazio. |
enableAllTargets |
--enable-all-targets |
boolean |
Não | false |
Seleciona todos os targets aceitos pela CLI. Isso não cria jobs de CI ausentes no template. |
enableTypeDef |
--enable-type-def |
boolean |
Não | true |
Mantém a feature type-def e as declarações TypeScript geradas. |
enableGithubActions |
--enable-github-actions |
boolean |
Não | true |
Mantém e filtra o workflow do GitHub Actions do template. |
testFramework |
--test-framework |
string |
Não | ava |
Framework de testes solicitado. Atualmente, os templates implementam apenas AVA. |
dryRun |
--dry-run |
boolean |
Não | false |
Valida opções, disponibilidade do Git e destino sem clonar nem gravar o projeto. |
napi new grava a feature napiN selecionada em Cargo.toml e a faixa de
Node.js correspondente em package.json#engines.node. Outras features Cargo
podem implicar um nível de Node-API maior; por isso, revise o conjunto final de
features ao adicionar integrações assíncronas ou outras integrações opcionais.
Templates e cache
As únicas seleções de template compatíveis são:
| Valor | Repositório |
|---|---|
yarn |
napi-rs/package-template |
pnpm |
napi-rs/package-template-pnpm |
A CLI armazena os templates em ~/.napi-rs/template/<package-manager>/repo.
Em uma execução posterior, ela busca o repositório e redefine o cache para
origin/main antes de copiá-lo. O diretório .git do template não é copiado
para o novo projeto.
Selecionar um target não garante suporte
O prompt lista todos os target triples que a CLI reconhece. O workflow gerado
só consegue manter linhas da matriz que já existam no template escolhido, e a
lista napi.targets gerada só consegue manter targets presentes na configuração
do pacote daquele template. Portanto, um target adicional aceito pode exigir
configuração manual, criação de diretórios npm, CI e testes de runtime.
Leia Suporte e compatibilidade antes de usar
--enable-all-targets e siga Adicionar um target a um projeto
existente para ver o
fluxo completo.